function NetSend(Sender,Empfaenger,msg:
String):LongInt;
begin
type
TNetMessageBufferSendFunction =
function(servername, msgname, fromname: PWideChar;
buf: PWideChar; buflen: Cardinal): Longint;
stdcall;
var
NetMessageBufferSend: TNetMessageBufferSendFunction;
SourceWideChar: PWideChar;
DestWideChar: PWideChar;
MessagetextWideChar: PWideChar;
Handle: THandle;
begin
Handle := LoadLibrary('
NETAPI32.DLL');
if Handle = 0
then
begin
Result := GetLastError;
Exit;
end;
@NetMessageBufferSend := GetProcAddress(
Handle, '
NetMessageBufferSend');
if @NetMessageBufferSend =
nil then
begin
Result := GetLastError;
Exit;
end;
MessagetextWideChar :=
nil;
SourceWideChar :=
nil;
DestWideChar :=
nil;
try
GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1);
StringToWideChar(Msg, MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
StringToWideChar(Empfaenger, DestWideChar, 20 * SizeOf(WideChar) + 1);
if Source = '
'
then
Result := NetMessageBufferSend(
nil, DestWideChar,
nil,
MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)
else
begin
GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1);
StringToWideChar(Sender, SourceWideChar, 20 * SizeOf(WideChar) + 1);
Result := NetMessageBufferSend(
nil, DestWideChar, SourceWideChar,
MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
FreeMem(SourceWideChar);
end;
finally
FreeMem(MessagetextWideChar);
FreeLibrary(
Handle);
end;
end;