求求求
解决方案 »
- 如何在一个对话框中访问另一个对话框的控件
- 新手求教:关于键盘消息 如何处理
- 请问如何得到DIB的大小?
- fatal error C1070: mismatched #if/#endif pair in file
- 如何完整建立一个PPPoE的连接?
- 关于CControlbar的问题.(请lixiaosan(小三) 、goodboyws(深夜不眠者)帮忙!!! )
- 服务程序能用那种方法连接数据库?
- 有谁做过这类东东,就是处理一个SDI单文档,里面的多个不同类型模板切换,请给出例子,急~~~~
- 请FreeSeagull(孤海闲鸥) 来取分
- 请教,用什么软件可以解开用ASPack压过的EXE?就是还原成原来的EXE
- 如何在程序员调用OFFICE里的功能?
- 用ShellExecute可以打开指定的文件夹,如何既打开文件夹,又可以让该文件夹下的某个文件获得焦点
方法有很多,下面是一种发送方发送通讯的消息以通知接收方,接收方在收到发送方的消息后就可以对内存进行读写操作。 在程序设计中采用Windows注册消息进行消息传递,首先在发送进程初始化过程中进行消息注册:
m_nMsgMapped=::RegisterWindowsMessage("Mapped");
m_nMsgHandle=::RegisterWindowsMessage("Handle");
m_nMsgShared=::RegisterWindowsMessage("Shared");
在程序运行中向接收进程发送消息:
CWnd* pWndRecv=FindWindow(lpClassName,"Receive");
pWndRecv->SendMessage(m_MsgMapped,0,0);
pWndRecv->SendMessage(m_nMsgHandle,
(UINT)GetCurrentProcessID(),(LONG)pApp->m_hGlobalHandle);
pWndRecv->SendMessage(m_nMsgShared,0,0);
可以按如下方式发送WM_COPYDATA消息:
static COPYDATASTRUCT cds;//用户存放数据
pWnd->SendMessage(WM_COPYDATA,NULL,(LONG)&cds); 接收方进程初始化也必须进行消息注册: UNIT CRecvApp:: m_nMsgMapped=::RegisterWindowsMessage("Mapped");
UNIT CRecvApp::m_nMsgHandle=::RegisterWindowsMessage("Handle");
UNIT CRecvApp::m_nMsgShared=::RegisterWindowsMessage("Shared");
同时映射消息函数如下:
ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgMapped,OnRegMsgMapped)
ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgHandle,OnRegMsgHandle)
ON_REGISTERED_MASSAGE(CRecvApp::m_nMsgShared,OnRegMsgShared)
在这些消息函数就可以采用上述技术实现接收进程中数据的读写操作了。