进程通讯1----WM_COPYDATA消息和自定义消息
来源:互联网 发布:centos 64位安装32位 编辑:程序博客网 时间:2024/04/27 20:18
使用粘剪板即在线程之间发送WM_COPYDATA消息,前提是:
1,知道接收消息进程的句柄。
2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?)
获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类名,或者标题名,如果你觉得这样不把握,那就利用SetProp给窗口做个记号。
发送端代码:
HWND hWnd = FindWindow(NULL,"MyApp");
if(hWnd!=NULL)
{
HANDLE hTemp = GetProp(hWnd,"abc");
if (hTemp == HANDLE(1))//光凭窗口名不够,可能会有很多同名窗口,而且不属于一个应用程序,所以加一个 //判断标记
{
COPYDATASTRUCT cpd; /*给COPYDATASTRUCT结构赋值*/
cpd.dwData = 0;
cpd.cbData = strlen("字符串");
cpd.lpData = (void*)"字符串";
::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);//发送!
}
}
接收端:
先设立一个标记
SetProp(m_hWnd,"abc",(HANDLE)1);
然后响应WM_COPYDATA消息
BOOL CwefsdfDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));
return CDialog::OnCopyData(pWnd, pCopyDataStruct);
}
其他包括标准window消息,命令消息,控件消息都无法跨进程发送,但是自定义消息可以
1.在接收端和发送端都自定义一个消息#define WM_COMM WM_USER+100
2.接收端映射消息:ON_MESSAGE(WM_COMM,OnUserReceiveMsg)
3.在发送端找到接收窗口,向接收窗口发送一个WM_COMM消息
粘剪板和自定义消息只能发送只读数据,接收端不能发送端的任何数据,只能读取发送过来的数据。
- 进程通讯1----WM_COPYDATA消息和自定义消息
- windows进程通信之消息和WM_COPYDATA
- Qt 进程间通讯学习(windows消息WM_COPYDATA)
- Qt 进程间通讯学习(windows消息WM_COPYDATA)
- 【WM_COPYDATA】进程通信——WM_COPYDATA消息
- 进程之间通过CWnd::SendMessage(WM_COPYDATA,*,*)发送和获取消息
- WM_COPYDATA消息
- 自定义消息在进程间通讯
- 进程间传递消息 WM_COPYDATA的用法
- WM_COPYDATA 消息实现进程间通信
- 进程间消息WM_COPYDATA通信示例
- 使用WM_COPYDATA消息完成进程间通信
- WM_COPYDATA 消息实现进程间通信
- Win7 不同进程使用WM_COPYDATA消息通信
- 使用WM_COPYDATA消息进程间通信
- WM_COPYDATA 消息实现进程间通信
- 通过WM_COPYDATA消息完成进程间通信
- 通过WM_COPYDATA消息完成进程间通信
- 详解诺基亚手机证书签名问题
- 鬼眼狂刀
- 小说--《黑客的心》第十五章 虎之欲跃必先卧!
- 使用NHibernate插入NULL值到数据库
- 如何获取MAC地址
- 进程通讯1----WM_COPYDATA消息和自定义消息
- NHibernate 如何处理泛型业务实体类?
- 第三届敏捷中国大会见闻
- MFC 之 静态成员对象初始化
- 要毕业了
- 倒计时按钮
- Response.Expires简述
- J2EE系统结构概念
- MFC 之 控件的禁用和启用