描述:
TAB键消息可以用hook获取
为什么WM_ACTIVEAPP消息怎么搞都弄不到,
因为我需要在IE不是当前窗口时暂停一些线程,
降低CPU时间,使之不会影响别的进程的工作
但我又不想轮询IE窗口的状态...
急救...谢谢
解决方案1:
可否考虑使用BHO?每个独立进程的IE,都会自动加载注册的BHO,并可以得到IWEBBORTHER,应该可以实现所需的
解决方案2:其实更好的做法是通过OLE的方式连接IE,IE Host作为OLE Server,而ActiveX则作为OLE Controller,通过连接OLE Server的事件,来达到获取ActiveApp通知。详情请参阅《IE5程序设计》中的bho开发章节。Invoke Event的时候通过判断DispID是特定的值,来产生所需的事件。请参阅ALT相关文档,以及IE的类型库头文件。请留意IE类型库头文件之IHTMLWindow2的声明。使用ATL的OLE事件连接机制即可产生所需的事件触发。
解决方案3:轮询好些。可以在Timer中进行,而要在一个线程的循环中进行的话,那么得加充分的Sleep长度,否则CPU就会100%
解决方案4:轮询比较好!
解决方案5: 看可不可以这样判断:
GetTopWindowHwnd() != IE hWnd
{
停止线程;
}
hook可以取到,用CBT钩子。
解决方案7:hook the main window in bho

