segunda-feira, 25 de maio de 2009

Mensagem para todos que estão na redewinnt?

Function NetSend(dest, source, msg: string): longint;
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(Dest, 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(source, 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;

Nenhum comentário:

Postar um comentário