有些软件在局域网发消息可以匿名。不知道是怎样实现的,和net send有没有关系。

解决方案 »

  1.   

    看微软的SDK中有没有关于Messager服务的说明。信使服务
      

  2.   

    我估计用api就是那个shellexec()直接调用net send的exe应该也是可以实现的吧
      

  3.   

    发送者可以任意
    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;