Rede - net send (mensagens) |
Top Previous Next |
|
// fazendo uma rotina estilo NET SEND do DOS
function NetSend(const 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;
procedure TForm1.Button1Click(Sender: TObject); begin NetSend('M01', 'Chuck Norris', 'M01: estou testando uma api do win2000, se recebeu esta mensagem responda agora!!'); end; |