Delphi World - Отправляет сообщение по локальной сети (как команда Net Send)
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Отправляет сообщение по локальной сети (как команда Net Send)

Автор: Num Lock
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Отправляет сообщение по локальной сети (как команда Net Send)

function NetSend(const sTo, sMessage: string): Boolean;
- Отправляет сообщение по локальной сети (делает тоже что и Net Send)
sTo - Кому (Имя пользователя, рабочей группы или компьютера).
Можно использовать '*', чтобы отправить всем.
sMessage - Text сообщения.

Зависимости: Windows, ActiweX
Автор:       Num Lock
Copyright:   Num Lock
Дата:        13 марта 2003 г.
***************************************************** }

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;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования