Консультация № 20040
21.04.2005, 02:01
0.00 руб.
0 6 6
Ув. эксперты.
Я как то задавал вопрос но мне так ни кто и не ответил.
1-е как можно обратиться к службе сообщений, чтобы отправить сообщение по заданному IP.
2-е Что нужно сделать чтобы в консольных приложениях (без VCL) отображался русский текст под ХР, 2к. Нужно настроить autoexec.bat а как это сделать.

Обсуждение

Неизвестный
21.04.2005, 02:21
общий
это ответ
Здравствуйте, KolesnikovAV!
1) читать про mailslots или банально winexec(pchar(‘net send ip "text"‘),0);
2) Ничего - просто либо перекодировать на лету в cp866, либо проект перед компиляцией перекодировать в cp866(я вообще сразу в фаре пишу), для корректно поставленных виндов руссификатор нужен только в полноэкранном режиме(RTFM), для 9х не нужен вообще, для 2к/xp... autoexec.bat вообще не при делах, а для 9х знать уже надо.
давно
Мастер-Эксперт
425
4118
21.04.2005, 05:49
общий
это ответ
Здравствуйте, KolesnikovAV!
2. Консольное приложение - это типа DOS, следовательно и кодировка там должна быть досовской. Если Вы пишете консольную программу в IDE, то в ней у Вас кодировка виндоусная.
Самый простой способ пишите исходник в FAR‘e (например). Там вновь создаваемый текстовый файл по умолчанию имеет кодировку ДОС.
Можно еще поменять кодировку консоли, но я это делать не рекомендую, т.к. в 9х консоли тогда будет отображаться абракадабра вместо русских букв.
Пример myprog.dpr:
{$APPTYPE CONSOLE}
Program myprog;
{Далее пишете то, что Вам нужно}
End.
После этого компилируете:
dcc32 myprog.dpr
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
21.04.2005, 07:33
общий
это ответ
Здравствуйте, KolesnikovAV!
Я отвечу только на первый вопрос:
WinExeC(Pchar(‘Net Send ‘+IP+Message));
Неизвестный
21.04.2005, 09:47
общий
это ответ
Здравствуйте, KolesnikovAV!
2) скорее всего нужно выводить в Dos кодировке
Неизвестный
21.04.2005, 10:19
общий
это ответ
Здравствуйте, KolesnikovAV!
2) можно использовать процедуры модуля Windows
- CharToOem - для преобразования текста на русском в кодировку консоли
- OemToChar - для обратного пребразования

Приложение:
uses SysUtils, Windows, Dialogs;var s:PAnsiChar; st:string;begin CharToOem(‘Привет‘,s); writeln(s); readln(st); OemToChar(PAnsiChar(st),s); Showmessage(s); readln;end.
Неизвестный
21.04.2005, 10:34
общий
это ответ
Здравствуйте, KolesnikovAV!
1) Для того чтобы отправлять сообщения через данную службу должны быть включены следующие службы: "Plug and Play", "Интерфейс NetBios", "Рабочая станция", "Удалённый вызов процедур (RPC)", "Служба сообщений". А отправлять сообщение можно командой net sent. Я сам когда-то писал такой "флудер", см код в приложении... Поясню код: Edit1 - Ip адрес, Edit2 - Сообщение, Edit3 - количество сообщений.
А по нажатию кнопки вызываем команду net sent (кстати, её синтаксис можно почитать если набрать в коммандной строке net sent /? )


Приложение:
procedure TForm1.Button1Click(Sender: PObj);vari: longint;k: integer;beginif edit1.Text=‘‘ then showmessage (‘Введите IP-адрес!‘) elseif edit2.Text=‘‘ then showmessage (‘Введите сообщение!‘) elseif edit3.Text=‘‘ then showmessage (‘Введите колличество сообщений!‘) elsebeginbeginbegintry i:=StrToInt (edit3.Text);except edit3.Text:=‘1‘; i:=1; showmessage (‘Некоректное колличество сообщений!‘);end;for k:=1 to i do begin ShellExecute(0,‘Open‘,‘net‘,PAnsiChar(‘send ‘+Edit1.Text+‘ ‘+Edit2.Text),nil,0); end;end;end;end;end;
Форма ответа