目前需要实现:能捕获到某个指定exe窗体打开事件,在打开前调用自己的程序,根据程序运行结果判断是否执行被拦截的exe事件。
原本是准备用钩子函数的,但是所有找到的WINCE钩子函数都说只有三个钩子:WH_JOURNALPLAYBACK,WH_JOURNALRECORD,WH_KEYBOARD_LL,靠它们无法实现拦截窗体时间。不知有无其他办法实现?
为什么不靠谱?我刚才还以为今天的想法挺聪明的
你不是想拦截exe吗,用你的程序替换关联之后,再打开exe类型文件用的就是你的程序了。
可是我不是想拦截所有的exe,只拦截几个特定的exe,修改了关联类型后,所有的exe打开都受影响。
不会影响其他的,看来你是不知道CreateProcess的用法。不过还有很多办法能监视指定exe。
楼上高啊,
修改关联,要比轮询要好。
还有别的办法呢。
说来学习一下。
我刚大学毕业接触这行,感觉吃不消。
最近在调试蓝牙的时候也遇到了跟楼主类似的问题。
由于从未接触过钩子程序,调试过程可让我痛苦不堪啊!
最后想出了个非常别扭的方法,基本上解决了,大家给点意见,看行不行的通!
“因我们要实现来电时候,弹出蓝牙界面,其他正在运行的程序需要暂时暂停”
我在其他应用程序的OnTimer(UINT_PTR nIDEvent)函数,或则OnPait(void)函数中加入下面的代码。
HWND getWnd =::FindWindow(NULL,_T("CND1989BlueTooth")); //获取窗体
if (getWnd ==::GetForegroundWindow()) //是否为顶层窗体
{
/*
在这对程序进行暂停,关闭。
*/
}
我个人觉得比较别扭。。。