.Net 利用消息在进程间通讯实现进程互操作
2018-06-17 20:16:27来源:未知 阅读 ()
有时候我们会遇到需要在两个进程间通过某种方式实现互操作,方法有很多,例如你可以尝试让两个进程持续监视一个外部文件,由此文件记录各自进程的数据;还有可以使用网络端口实现进程间通讯、共享一片内存区域记录及传递各自进程的数据等;此处讲述在.net 下如何利用消息的传递及处理实现两个进程的通讯。
是的,这里所说的消息指的就是Windows的消息机制,对于 I T 菜鸟,可以这样简单理解Windows 消息机制:Windows系统可以同时运行很多很多应用程序,Windows系统要让某一个程序做一件事情,就会给这个程序发送一条消息通知该程序该做什么了。
先引入Windows API 方法 SendMessage :
1 [DllImport("User32.dll", EntryPoint = "SendMessage")]
2 private static extern int SendMessage(IntPtr wnd, int msg, IntPtr wP, IntPtr lP);
给指定用于响应消息的窗体对象重写消息处理过程
1 protected override void WndProc(ref System.Windows.Forms.Message msg) 2 { 3 switch(msg.Msg) 4 { 5 case 0x0400: 6 bool OnOff = Convert.ToBoolean((int)msg.LParam); 7 break; 8 default: 9 base.WndProc(ref msg); 10 break; 11 } 12 }
好了,上述代码实现了接收消息的程序如何处理接收到的消息地址(ID)为0x0400的自定义消息。
现在只需要在用于发送消息的项目编写发送消息的内容即可
1 SendMessage(Program.hWnd, 0x0400, (IntPtr)0, (IntPtr)1);
传递其它类型数据,请参照C# <-->C/C++ 类型转换对照表,使用托管到非托管程序集转换数据。
如传递String类型数据,SendMessage()传string,接收的时候使用 string A = Marshal.PtrToStringAnsi(m.LParam) 。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 深入delphi编程理解之消息(一)WINDOWS原生窗口编写及消息 2020-01-17
- php文件加密解密 2019-09-17
- Delphi - 鼠标上下滚动基础消息事件 2019-09-17
- Delphi - 利用TRzTrayIcon实现WinFrm工程最小会到托盘 2019-09-04
- .NET “底层”异步编程模式—&a 2018-06-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash