要控制整个系统,就得处理进程的同步,通信等一大堆问题,
在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);
}
文章评论(0条评论)
登录后参与讨论