原创 基于消息机制的进程通信

2008-12-6 13:31 4331 7 7 分类: 软件与OS

要控制整个系统,就得处理进程的同步,通信等一大堆问题,


在WinCE里,最简单的方式就是消息通信,一般采用PostMessage,


BOOL PostMessage(
  HWND
Msg,       // message
  WPARAM lParam   // second message parameter
);


PostMessage将消息放入目标窗口的消息队列,同时也支持广播消息(hWnd =HWND_BROADCAST)。


由于广播消息所有窗口都会处理,为了减轻系统负载,我们就需要针对目标窗口发送消息,即给定hWnd的值。


为了得到hWnd的值,我们有两种方式:


1) 查找窗口,通过查找窗口来找到目标窗口,给定ClassName或WindowName均可,不确定的用NULL代替。


HWND FindWindow(
  LPCTSTR
lpWindowName  // window name
);


2) 枚举进程,通过进程名来识别


通过ToolHelp函数对系统中所有进程遍历,CreateToolhelp32Snapshot获取进程相关信息,最后得到句柄。


点击看大图


这里我实现了一个简单的实例,通过右边的对话框控制左边的动作。


  hGISViewWnd = ::FindWindow(NULL,_T("GISView"));
 if(hGISViewWnd != NULL)
 {
  ::PostMessage(hGISViewWnd,WM_COMMAND,1003,1);
 }


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /3 下一条