Delphi - Üzenetküldés egy adott felhasználónak (NetSend)

forráskód letöltése
Hálózatba kötött gépek esetében lehetőségünk van arra, hogy egy kis segédprogram felhasználásával egy tetszőleges üzenetet küldjünk egy megadott felhasználónak.

Mellékelt példában annak járunk utána, hogy ezt miként tehetnénk meg egy Delphi-s alkalmazásból. A megoldáshoz szükségünk lesz a NetMessageBufferSend függvényre, mely Netapi32.dll-ben található. Mivel a Delphi unit-jaiban nem hivatkozik rá, így első lépésként ezt a problémát kell megoldanunk egy egyszerű deklarációval:

function NetMessageBufferSend(ServerName: PWideChar; MsgName: PWideChar; FromName: PWideChar; Buf: PWideChar; BufLen: integer): integer; stdcall; external 'netapi32.dll';

A Netapi32.dll-ről tudnunk kell, hogy a NetMessageBufferSend függvénye csak WinNT 3 operációsrendszertől, vagy ettől felfelé használható, tehát Win9x alatt ne is próbálkozzunk vele.

Ha ez megvan, akkor már csak egyszerűen meg kell hívnunk. Mivel sztring paramétereinél WideChar típust vár, így a függvényhívás előtt a StringToWideChar függvénnyel sztringjeinket át kell alakítani.
procedure TForm1.Button1Click(Sender: TObject);
var
  MsgName: array[0..127] of WideChar;
  Buf: array[0..1023] of WideChar;
begin
  StringToWideChar(Edit1.Text, @MsgName, 128);
  StringToWideChar(Memo1.Lines.Text, @Buf, 1024);
  NetMessageBufferSend(nil, @MsgName, nil, @Buf, 
        Length(Memo1.Lines.Text)*2+2);
end;