SendMessage进程间简单通信问题
2005-07-12 10:23
381 查看
进程间通信常用有3种:(1).利用剪贴板实现进程数据交换.
(2).利用内存映射实现进程数据交换.
(3).利用消息机制实现进程间数据共享.
本例以两个VC Dialog application 为例用SendMessage(方法3)进行两进程间简单通信:
主要API:FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName )
//通过进程名得到进程handle
SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0)
//The result of the message processing; its value depends on the message sent.
主程序 Server :其他均为默认.
MFC 建立一Dialog 应用程序,工程名字:Server
添加一Button控件command,并与之对应的函数OnCommand
在ServerDlg.h里添加自己的消息:#define WM_COMM WM_USER+10
函数 OnCommand 添加代码:
{
CString str="Client";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,0,0);//通过SendMessage的后两个参数
//WPARAM wParam, LPARAM lParam传递信息
else MessageBox("FindWindow NULL");
}
MFC另 建立一Dialog 应用程序,工程名字:Client 在 其
OnInitDialog里最后添加代码SetWindowText("Client");
在Client.h里添加自己的消息:#define WM_COMM WM_USER+10
添加消息映射:
BEGIN_MESSAGE_MAP(CSenderDlg, CDialog)
//{{AFX_MSG_MAP(CSenderDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_COMM,OnSendMsg)//添加的自己的消息处理
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
给ClientDlg.cpp添加自己的消息处理函数OnSendMsg(WPARAM wParam, LPARAM lParam)
{
// wParam lParam既是要传递的信息
if(wParam==0 && lParam==0)
AfxMessageBox("HelloWorld!");
}
(2).利用内存映射实现进程数据交换.
(3).利用消息机制实现进程间数据共享.
本例以两个VC Dialog application 为例用SendMessage(方法3)进行两进程间简单通信:
主要API:FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName )
//通过进程名得到进程handle
SendMessage(UINT message, WPARAM wParam = 0, LPARAM lParam = 0)
//The result of the message processing; its value depends on the message sent.
主程序 Server :其他均为默认.
MFC 建立一Dialog 应用程序,工程名字:Server
添加一Button控件command,并与之对应的函数OnCommand
在ServerDlg.h里添加自己的消息:#define WM_COMM WM_USER+10
函数 OnCommand 添加代码:
{
CString str="Client";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,0,0);//通过SendMessage的后两个参数
//WPARAM wParam, LPARAM lParam传递信息
else MessageBox("FindWindow NULL");
}
MFC另 建立一Dialog 应用程序,工程名字:Client 在 其
OnInitDialog里最后添加代码SetWindowText("Client");
在Client.h里添加自己的消息:#define WM_COMM WM_USER+10
添加消息映射:
BEGIN_MESSAGE_MAP(CSenderDlg, CDialog)
//{{AFX_MSG_MAP(CSenderDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_MESSAGE(WM_COMM,OnSendMsg)//添加的自己的消息处理
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
给ClientDlg.cpp添加自己的消息处理函数OnSendMsg(WPARAM wParam, LPARAM lParam)
{
// wParam lParam既是要传递的信息
if(wParam==0 && lParam==0)
AfxMessageBox("HelloWorld!");
}
相关文章推荐
- SendMessage进程间简单通信问题
- SendMessage进程间简单通信问题
- 简单的实现,在无名管道里父子进程间的通信(大小写的转换)
- 简单的实现在有名管道里,进程间的通信(非阻塞)。
- 简单的android进程间(远程)服务通信示例【AIDL方式】
- 关于进程或机器间通信问题
- 监听socket被子进程继承导致的通信问题
- linux下进程间共享内存通信的问题
- 计算机操作系统 2.5对经典进程的同步问题 的简单解释
- 无线通信中功率/速率调度的优化问题:一种最简单的情形
- 设置 NULL DACL 权限描述符解决ASP.NET 通过 FileMapping 与其他进程通信问题
- android 进程与线程 进程与进程 线程与线程通信问题
- 【原创】TCP Socket 简单练习 --- 新进程辅助通信 分类: Linux --- 应用程序设计 2014-12-23 10:27 64人阅读 评论(0) 收藏
- Linux进程通信简单总结(一)
- 进程间的通信简单总结
- C#中使用SendMessage进行进程通信的实例
- C++技术问题总结-第2篇 进程通信
- 线程和 进程间的通信问题
- 进程通信-SendMessage使用方法
- C/C++:linux进程通信简单例子(管道)