zoukankan      html  css  js  c++  java
  • 关于给居于网络里面的计算机发送消息的问题

                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  是消息

  • 相关阅读:
    为什么要用webUI?
    探索WebKit内核(一)------ 菜鸟起步
    主进程退出的时候,杀死所有子进程
    那两年炼就的Android内功修养
    飞鸽---局域网聊天软件攻防战
    如何利用Fluxion诱惑目标用户获取WPA密码
    性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench
    解决maven编译错误:程序包com.sun.xml.internal.ws.spi不存在
    Apache-Flink深度解析-DataStream-Connectors之Kafka
    linux下find(文件查找)命令的用法总结
  • 原文地址:https://www.cnblogs.com/chenhs/p/1286490.html
Copyright © 2011-2022 走看看