FUNCTION NetSend(dest, Source, Msg: STRING): Longint; overload; 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;FUNCTION NetSend(Dest, Msg: STRING): Longint; overload; BEGIN Result := NetSend(Dest, '', Msg); END;FUNCTION NetSend(Msg: STRING): Longint; overload; BEGIN Result := NetSend('', '', Msg); END;
===========demo=========== =============================PROCEDURE TForm1.BitBtn1Click(Sender: TObject); CONST NERR_BASE = 2100; NERR_NameNotFound = NERR_BASE + 173; NERR_NetworkError = NERR_BASE + 36; NERR_Success = 0; VAR Res: Longint; sMsg, MSGSTR, LoginName, From_name: STRING; BEGIN TRY LoginName := Trim(ComboBox1.Text); From_name := Trim(Edit1.Text); MSGSTR := Memo1.Text; IF LoginName = '' THEN BEGIN ShowMessage('发送地未知!'); ComboBox1.SetFocus; exit; END; IF Trim(MSGSTR) = '' THEN BEGIN ShowMessage('请给出发送信息!'); Memo1.SetFocus; exit; END; Res := NetSend(LoginName, From_name, MSGSTR); CASE Res OF ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested information.'; ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.'; ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.'; NERR_NameNotFound: sMsg := 'The user name could not be found.'; NERR_NetworkError: sMsg := 'A general failure occurred in the network hardware.'; NERR_Success: BEGIN sMsg := '发送成功!'; //'Message sent!' IF update_flag THEN BEGIN inifile.WriteString('Users', ComboBox1.Text, ''); END; Form1.Close; END; END; //ShowMessage(sMsg); StatusBar1.Panels[0].Text := sMsg; EXCEPT ShowMessage('发送不成功!'); END;END;
CmdLine: string;
begin
CmdLine:='cmd /c "net send '+Edit1.Text+' '+Edit2.Text+'"';
winexec(pchar(CmdLine),SW_HIDE);
end;
搜索netbuffersend
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;FUNCTION NetSend(Dest, Msg: STRING): Longint; overload;
BEGIN
Result := NetSend(Dest, '', Msg);
END;FUNCTION NetSend(Msg: STRING): Longint; overload;
BEGIN
Result := NetSend('', '', Msg);
END;
===========demo===========
=============================PROCEDURE TForm1.BitBtn1Click(Sender: TObject);
CONST
NERR_BASE = 2100;
NERR_NameNotFound = NERR_BASE + 173;
NERR_NetworkError = NERR_BASE + 36;
NERR_Success = 0;
VAR
Res: Longint;
sMsg, MSGSTR, LoginName, From_name: STRING;
BEGIN
TRY
LoginName := Trim(ComboBox1.Text);
From_name := Trim(Edit1.Text);
MSGSTR := Memo1.Text;
IF LoginName = '' THEN
BEGIN
ShowMessage('发送地未知!');
ComboBox1.SetFocus;
exit;
END;
IF Trim(MSGSTR) = '' THEN
BEGIN
ShowMessage('请给出发送信息!');
Memo1.SetFocus;
exit;
END;
Res := NetSend(LoginName, From_name, MSGSTR);
CASE Res OF
ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested information.';
ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.';
ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.';
NERR_NameNotFound: sMsg := 'The user name could not be found.';
NERR_NetworkError: sMsg := 'A general failure occurred in the network hardware.';
NERR_Success:
BEGIN
sMsg := '发送成功!'; //'Message sent!'
IF update_flag THEN
BEGIN
inifile.WriteString('Users', ComboBox1.Text, '');
END;
Form1.Close;
END;
END;
//ShowMessage(sMsg);
StatusBar1.Panels[0].Text := sMsg;
EXCEPT
ShowMessage('发送不成功!');
END;END;
demo你可以根据需要自己改一下