使用WM_COPYDATA是个简单,可靠的办法用WM_COPYDATA的前提:1,知道接收消息进程的句柄。2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?)看过前提,的出结论:在自己写的两个进程间用WM_COPYDATA再好不过。下面CODE几行就说明了一切。获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都)发送端代码: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);
}
}接收端重载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);
}
解决方案 »
- #pragma data_seg 里面能否存放一个map?
- 跳槽,散分......
- 分明天补齐100.问 从 VC6.0 到 VC2005 的变化. 大部分的分给 最早回答的 且最详细的
- 能把map模版用作参数吗?
- m_wndSplitter的SetColumnInfo()函数的参数含义是什么;
- 有谁用过DuplicateHandle,过来看看,来者有分!
- vc函数得到的字符串如何传给vb??吐血提问
- 8848.com 高薪招聘VC/MFC程序员
- 那里有关于direct3d的资料和文章啊
- 通过COM组件中返回一二进制文件内容,如何定义接口?
- WINNT 4.0下我滚动滚轮,为什么页面不往下翻呢????
- 请问谁有VC做钩子程序的教程,最好能系统一些,谢谢
可采用的办法有WinSocks,DCOM
MSMQ
COM/DCOM
DDE
剪贴板
管道
SOCKET
数据库管道(有名管道),开发快,不需要多计算机的配置。