關於給居於網路裡面的電腦發送訊息的問題

來源:互聯網
上載者:User

            Q :關於給居於網路裡面的電腦發送訊息的問題?
            主要解答者:jianzhang提交人:zflying2000
            感謝:li_zhifu、hnxrm
            審核者:dext論壇對應貼子:查看
                 A :

            我想問一個問題,就是如何通過程式控制對區域網路內或者廣域網路中能ping通的電腦發送訊息並且可以在另外一台電腦上顯示出來。就是利用windows的message服務。相似的例子就是那個信史服務軟體的功能。
            
            不知道在delphi中如何調用。或者其原來是如何? 
            用那些API函數功能? 
            非常感謝! 
            保證給分數! 
            --------------------------------------------------------------- 
            
            Winexec('net  send  168.1.100.8  this  is  a  test',sw_hide); 
            --------------------------------------------------------------- 
            
            Winexec('net  send  *  this  is  a  test',sw_hide); 
            這就能廣播了 
            把this  is  a  test這句話,用個字串變數來代替就可以發任何訊息. 
            不過這辦法有些笨,應該是有API函數實現這個功能的. 
            
            --------------------------------------------------------------- 
            
            用以下函數 
            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;   
            dest  是目的主機名稱 
            Source  是源主機名稱可任以設定 
            Msg  是訊息

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.