Windows使用自定义消息实现进程之间通信
来源:互联网 发布:上海电商淘宝客服招聘 编辑:程序博客网 时间:2024/06/06 09:06
Windows使用自定义消息实现进程之间通信
Windows程序与其它类型程序的区别就是使用消息,例如键盘或鼠标消息等,在dos系统下的程序没有定义消息。在windows操作系统中,消息不但可以用于进程内的通信,也可以用于进程间的通信。而我这篇博文将讲使用自定义消息实现进程间的通信。
我们都知道,在windows中消息分为两种,即系统消息和用户自定义消息,系统消息定义从0到0x3ff,可以使用0x400到0x7fff定义自己的消息。windows把0x400定义为WM_USER,如果想定义自己的一个消息,可以在WM_USER上加上一个值。当然了,还有另外一种方法,这里就不讲了,而是使用RegisterWindowsMessage()函数。
要想用消息实现进程间通信,则需要在这两个程序中定义或注册相同的消息,才能保证数据通信顺利进行。
使用这种方式实现进程间通信,但是传送的数据只能是长整型的数据,不能是字符串。所以这个就是这种方式的局限。
定义完消息之后,可以使用如下的方法来发送消息:
Pwnd->SendMessage(WM_USER+0x401, NULL, (LPARAM)Msg)
参数代表的含义,在此就不多费口舌了,可以查阅MSDN。
好了,废话不多说,上代码:
SendDlg:
afx_msg LRESULT OnUserSendMsg(WPARAM wParam, LPARAM lParam); // 自定义的消息
BEGIN_MESSAGE_MAP(CSendDlgDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_MESSAGE(WM_STRSEND, OnUserSendMsg)//}}AFX_MSG_MAPON_BN_CLICKED(IDOK, &CSendDlgDlg::OnBnClickedSendMsg)END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////// 发送数据LRESULT CSendDlgDlg::OnUserSendMsg(WPARAM wParam, LPARAM lParam){UpdateData(); // 更新数据CWnd *pWnd = CWnd::FindWindow(NULL, _T("RecvDlg"));if (pWnd == NULL){AfxMessageBox(_T("无法找到接收窗口"));return 0;}UINT uMsg;uMsg = atoi(m_strSend);pWnd->SendMessage(WM_STRSEND, NULL, (LPARAM)uMsg); // 发送消息return 0;}
RecvDlg类似,此处提供完整的项目工程下载地址(注:项目工程使用vs2008 sp1建立的,如果使用别的vs版本,可能会出错)。
由于只能发送长整形的数据,所以,在程序中,你只能输入数字字符,而不能发送其它非数字字符。
单击这里下载演示工程
- Windows使用自定义消息实现进程之间通信
- MFC使用SendMessage()发送自定义消息实现进程间通信
- MFC使用SendMessage()发送自定义消息实现进程间通信
- MFC使用SendMessage()发送自定义消息实现进程间通信
- MFC使用SendMessage()发送自定义消息实现进程间通信
- MFC使用SendMessage发送自定义消息实现进程间通信
- MFC使用SendMessage()发送自定义消息实现进程间通信
- 自定义消息实现进程间的通信
- 使用消息实现进程间通信
- 进程间通信 1 -- 使用RegisterWindowMessage实现消息通信
- windows使用消息进行控制台进程间通信
- Windows用户自定义消息实现程序间通信
- Linux进程之间通信消息队列
- 消息队列不同进程之间通信
- 使用微软消息队列实现C#进程间通信
- 使用微软消息队列实现C#进程间通信
- 使用微软消息队列实现C#进程间通信
- 使用微软消息队列实现C#进程间通信
- 仔细选择你的容器(STL)
- 动态添加view
- Android客户端线上BUG收集、反馈及定位
- fatal error C1047: The object or library file "..."was created with an older compiler than
- vc2010 与 manifest
- Windows使用自定义消息实现进程之间通信
- 记录我开发鞋服行业供应链软件的历程<设计代码生成工具>
- Instagram,未来创业者的标杆
- 【Android代码片段之一】图片处理Bitmap相关类型转换
- Web控件
- 丛林生存法则——狼与鹿
- java 正则表达式1
- .NET中验证域用户名以及密码的方式
- 三少爷的剑