请问WINCE下的进程监控如何实现?

heyuqi   2007-11-19 15:46 楼主
目前需要实现:能捕获到某个指定exe窗体打开事件,在打开前调用自己的程序,根据程序运行结果判断是否执行被拦截的exe事件。
原本是准备用钩子函数的,但是所有找到的WINCE钩子函数都说只有三个钩子:WH_JOURNALPLAYBACK,WH_JOURNALRECORD,WH_KEYBOARD_LL,靠它们无法实现拦截窗体时间。不知有无其他办法实现?

回复评论 (7)

你修改注册表中.exe 文件类型的关联不就行了?
点赞  2007-11-19 16:52
修改exe文件类型关联?好像不大靠谱。
点赞  2007-11-19 18:12
为什么不靠谱?我刚才还以为今天的想法挺聪明的

你不是想拦截exe吗,用你的程序替换关联之后,再打开exe类型文件用的就是你的程序了。
点赞  2007-11-19 23:33
可是我不是想拦截所有的exe,只拦截几个特定的exe,修改了关联类型后,所有的exe打开都受影响。
点赞  2007-11-20 10:43
不会影响其他的,看来你是不知道CreateProcess的用法。不过还有很多办法能监视指定exe。
点赞  2007-11-20 12:30
楼上高啊,
修改关联,要比轮询要好。

还有别的办法呢。
说来学习一下。
点赞  2007-11-20 12:45
我刚大学毕业接触这行,感觉吃不消。
最近在调试蓝牙的时候也遇到了跟楼主类似的问题。
由于从未接触过钩子程序,调试过程可让我痛苦不堪啊!
最后想出了个非常别扭的方法,基本上解决了,大家给点意见,看行不行的通!
“因我们要实现来电时候,弹出蓝牙界面,其他正在运行的程序需要暂时暂停”
我在其他应用程序的OnTimer(UINT_PTR nIDEvent)函数,或则OnPait(void)函数中加入下面的代码。
HWND getWnd =::FindWindow(NULL,_T("CND1989BlueTooth"));  //获取窗体
if (getWnd ==::GetForegroundWindow())                    //是否为顶层窗体
{
     /*
     在这对程序进行暂停,关闭。
     */
}
我个人觉得比较别扭。。。
点赞  2008-11-25 15:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复