Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Отправляет сообщение по локальной сети (как команда Net Send)

Delphi , Интернет и Сети , Сеть



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

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
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, который реализует функцию NetSend для отправки сообщения по локальной сети с помощью команды Net Send.

Вот подробный анализ кода:

  1. Первая секция определяет функцию NetSend с ее подписью, включая тип возвращаемого значения Boolean.
  2. В следующей секции объявляются переменные: wMessage, wTo, i, hLib и NetMessageBufferSend. wMessage и wTo - указатели на широкие символические строки, которые будут хранить текст сообщения и имя получателя соответственно.
  3. Код затем загружает библиотеку NetApi32.dll с помощью функции LoadLibrary, которая возвращает.handle (hLib) если операция успешна.
  4. Если библиотека была загружена успешно, код пытается получить адрес функции NetMessageBufferSend с помощью функции GetProcAddress и хранит его в переменной NetMessageBufferSend.
  5. Код затем выделяет память для переменных wMessage и wTo с помощью функции CoTaskMemAlloc.
  6. Затем код конвертирует входные строки (sMessage и sTo) в широкие символические строки с помощью функции StringToWideChar.
  7. Код затем вызывает функцию NetMessageBufferSend, передавая имя получателя (wTo), текст сообщения (wMessage) и другие параметры.
  8. Если вызов успешен, функция возвращает True. В противном случае код отображает сообщение об ошибке с помощью функции MessageBox.

Пример использования функции NetSend в конце кода показывает, как использовать ее в обработчике события формы. Когда пользователь кликает кнопку, код вызывает NetSend с текстом из комбо-бокса и мемо-контроля в качестве входных данных, а затем отображает сообщение о успешной отправке если операция была успешна.

Обратите внимание, что этот код требует установки Windows и компонентов ActiveX на системе, и использует библиотеку NetAPI32.dll, которая предоставляет сетевые API.

Функция NetSend позволяет отправлять сообщения по локальной сети, подобно команде Net Send.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сеть ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:42:04/0.0036489963531494/0