各位大虾,如何用程序实现Win2000 Server的局域网互发消息功能,即net send 计算机名 ....,麻烦给出源码,拜谢!

解决方案 »

  1.   

    WinExec('net send 192.168.0.1 HelloWorld',SW_HIDE);
      

  2.   

    这个问题被问了100遍了
    你搜索一下 NetMessageBufferSend 这个函数另外 xp sp2已经把messenger服务改为默认关闭了。
      

  3.   

    unit SendMsgUnit;
    interface
    uses SysUtils, Classes;function ToUnicode(str:string;dest:PWideChar):integer;
    function SendMsg(Toh,From,Msg:string):integer;
    function NetMessageBufferSend(servername:PWideChar;
                                  MsgName:PWideChar;
                                  FromName:PWideChar;
                                  Buf: PWideChar;
                                  var BufLen:integer):integer;cdecl;
    implementationfunction ToUnicode(str:string;dest:PWideChar):integer;
    var
      len:integer;
    begin
      //len:=0;
      StringToWideChar(str,dest,len);
      Result:=len;
    end;
    function NetMessageBufferSend; external 'netapi32.dll' name 'NetMessageBufferSend';function SendMsg(Toh,From,Msg:string):integer;
    var
      ToName :array [0..64] of WideChar;
      FromName :array [0..64] of WideChar;
      WMsgText:array [0..1000] of WideChar;
      MsgLen, i:integer;
    begin
      for i := 0 to 64 do ToName[i] := #0;
      ToUnicode(Toh,ToName);  for i := 0 to 64 do FromName[i] := #0;
      ToUnicode(From,FromName);  for i := 0 to 1000 do WMsgText[i] := #0;
      ToUnicode(Msg,WMsgText);  Result:=NetMessageBufferSend(nil,ToName,nil,@WMsgText,MsgLen);
    end;end.
      

  4.   

    unit SendFunc;interface
    uses
      Windows;
    Function NetSendMsg(Dest, Msg: string):string;
    implementation
    function NetSend(dest, Source, Msg: string): Longint; overload;typeTNetMessageBufferSendFunction = function(servername, msgname, fromname: PWideChar;buf: PWideChar; buflen: Cardinal): Longint;stdcall;varNetMessageBufferSend: TNetMessageBufferSendFunction;SourceWideChar: PWideChar;DestWideChar: PWideChar;MessagetextWideChar: PWideChar;Handle: THandle;beginHandle := LoadLibrary('NETAPI32.DLL');if Handle = 0 thenbeginResult := GetLastError;Exit;end;@NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend');if @NetMessageBufferSend = nil thenbeginResult := GetLastError;Exit;end;MessagetextWideChar := nil;SourceWideChar := nil;DestWideChar := nil;tryGetMem(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 = '' thenResult := NetMessageBufferSend(nil, DestWideChar, nil,MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)elsebeginGetMem(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;finallyFreeMem(MessagetextWideChar);FreeLibrary(Handle);end;end;function NetSend(Dest, Msg: string): Longint; overload;beginResult := NetSend(Dest, '', Msg);end;function NetSend(Msg: string): Longint; overload;beginResult := NetSend('', '', Msg);end;
    Function NetSendMsg(Dest, Msg: string):string;
    constNERR_BASE = 2100;NERR_NameNotFound = NERR_BASE + 173;NERR_NetworkError = NERR_BASE + 36;NERR_Success = 0;varRes: Longint;sMsg: string;beginRes := NetSend(Dest,'', Msg);case Res ofERROR_ACCESS_DENIED: Result := 'user does not have access to the requested information.';ERROR_INVALID_PARAMETER: Result := 'The specified parameter is invalid.';ERROR_NOT_SUPPORTED: Result := 'This network request is not supported.';NERR_NameNotFound: Result := 'The user name could not be found.';NERR_NetworkError: Result := 'A general failure occurred in the network hardware.';NERR_Success: Result := 'Message sent!';end;end;end.
    调用:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      NetSendMsg(ip.Text,memo1.Text);
    end;
      

  5.   

    delphibbs的高人写过一个mailslot的程序,你可以搜搜
      

  6.   

    var
       txts:String;
    begin
       txts:='net.exe send '+iplist.Text+' '+txt.Text;
       winexec(PChar(txts),sw_hide);
       ShowMessage('信息发送成功!');
    end;