Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Net Send 172.16.120.3 Privet ! Kak Sam? [D6, WinXP]


Прямая извилина ©   (2005-08-15 13:14:00) 

Добрый день ! Помогите пожалуйста с вопросом. У меня на форме
одна кнопка и 2 Edit-а. В первый едит нужно ввести сообщение
а на второй IP адрес. Как при нажатии кнопки сообщение отправить по IP адресу, путем Net send-а. Помогите тупому студенту плииз. Заранее спасибо.


Kazakh   (2005-08-15 13:56:00) [1]

Лови.....

function NetSend(const sTo, sMessage: string): Boolean;
type
 PNetMessageBufferSend = ^TNetMessageBufferSend;
 TNetMessageBufferSend = function(
   servername: PWideChar;
   msgname: PWideChar;
   fromname: PWideChar;
   buf: PBYTE;
   buflen: DWORD
   ): Integer; stdcall;
var
 wMessage, wTo: PWideChar;
 i, hLib: Integer;
 NetMessageBufferSend: TNetMessageBufferSend;
begin
 Result := False;
 hLib := LoadLibrary('NetApi32.dll');
 if hlib > 0 then
 try
   @NetMessageBufferSend := GetProcAddress(hLib, 'NetMessageBufferSend');
   if @NetMessageBufferSend <> nil then
   begin
     wMessage := CoTaskMemAlloc((Length(sMessage) + 1) * sizeof(WideChar));
     try
       wTo := CoTaskMemAlloc((Length(sTo) + 1) * sizeof(WideChar));
       try
         StringToWideChar(sMessage, wMessage, Length(sMessage) + 1);
         StringToWideChar(sTo, wTo, Length(sTo) + 1);
         i := NetMessageBufferSend(nil, wTo, nil, PBYTE(wMessage),
           (Length(sMessage) + 1) * sizeof(WideChar));
         Result := i = ERROR_SUCCESS;
         if not Result then
           MessageBox(GetForegroundWindow, 'Сообщение не отправлено.', nil,
             $1010);
       finally
         CoTaskMemFree(wTo);
       end;
     finally
       CoTaskMemFree(wMessage);
     end;
   end
   else
     MessageBox(GetForegroundWindow,
       'Функция NetMessageBufferSend не обнаружена.', nil, $1010);
 finally
   FreeLibrary(hLib);
 end
 else
   MessageBox(GetForegroundWindow, 'NetApi32.dll не загружена.', nil, $1010);
end;

Пример использования:

procedure TForm1.NetSendBtnClick(Sender: PObj);
begin
 if NetSend(combobox1.Text, Memo1.Text) then
 begin
   Memo1.Clear;
   MessageBox(Form.Handle, 'Отправка сообщения.', 'Сообщение отправлено',
     MB_ICONINFORMATION);
 end;
end;


Андрей Жук   (2005-08-15 13:33:00) [2]

Если для очень прямых извилин, то
WinExec32('net send 172.16.120.3 Privet !',0);

Project JCL


Прямая извилина   (2005-08-15 13:21:00) [3]

Дайте ответ если не трудно, плиз.


Digitman   (2005-08-15 13:15:00) [4]


> Прямая извилина  


> Помогите тупому


как это сочетается ?)


Наверх

Титульная страница Поиск, карта сайта Написать письмо