正文

用WM_COPYDATA实现进程通信 vc2006-09-25 12:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/embed/18795.html

分享到:

用WM_COPYDATA实现进程通信vc++技术 这个过于简单,实在凑不上几个字,所以干脆越简单越好吧! 用WM_COPYDATA的前提: 1,知道接收消息进程的句柄。 2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?) 看过前提,得出结论:在自己写的两个进程间用WM_COPYDATA再好不过。 下面CODE几行就说明了一切。 获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都) OK,开始写发送端代码: HWND hWnd = FindWindow(NULL,"MyApp"); if(hWnd!=NULL) {       COPYDATASTRUCT cpd; /*给COPYDATASTRUCT结构赋值*/       cpd.dwData = 0;       cpd.cbData = strlen("字符串");       cpd.lpData = (void*)"字符串";       ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);//发送!       /*完事儿了!!*/ } 接收端重载ON_WM_COPYDATA消息映射函数(下面是手工所要加的,你最好还是用ClassWizard) afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct); ON_WM_COPYDATA()/*消息映射*/ BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) {        AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));/*利用对话框表示收到消息*/         return CWnd::OnCopyData(pWnd, pCopyDataStruct);} 进程通信还有其他一些手段,相对来说比较麻烦,但局限性要比WM_COPYDATA小。当然你也可以两端都注册一个消息来通信。

阅读(3759) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册