首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

200分请教IE里ActiveX控件怎么获取WM_ACTIVEAPP消息,或者怎么获取IE的WM_ACTIVEAPP消息

2012-01-30 
200分请问IE里ActiveX控件如何获取WM_ACTIVEAPP消息,或者如何获取IE的WM_ACTIVEAPP消息TAB键消息可以用hoo

200分请问IE里ActiveX控件如何获取WM_ACTIVEAPP消息,或者如何获取IE的WM_ACTIVEAPP消息
TAB键消息可以用hook获取
为什么WM_ACTIVEAPP消息怎么搞都弄不到,
因为我需要在IE不是当前窗口时暂停一些线程,
降低CPU时间,使之不会影响别的进程的工作
但我又不想轮询IE窗口的状态...
急救...谢谢

[解决办法]
看可不可以这样判断:
GetTopWindowHwnd() != IE hWnd
{
停止线程;
}
[解决办法]
hook the main window in bho
[解决办法]
轮询比较好!
[解决办法]
轮询好些。可以在Timer中进行,而要在一个线程的循环中进行的话,那么得加充分的Sleep长度,否则CPU就会100%
[解决办法]
其实更好的做法是通过OLE的方式连接IE,IE Host作为OLE Server,而ActiveX则作为OLE Controller,通过连接OLE Server的事件,来达到获取ActiveApp通知。详情请参阅《IE5程序设计》中的bho开发章节。Invoke Event的时候通过判断DispID是特定的值,来产生所需的事件。请参阅ALT相关文档,以及IE的类型库头文件。请留意IE类型库头文件之IHTMLWindow2的声明。使用ATL的OLE事件连接机制即可产生所需的事件触发。
[解决办法]
hook可以取到,用CBT钩子。
[解决办法]
可否考虑使用BHO?每个独立进程的IE,都会自动加载注册的BHO,并可以得到IWEBBORTHER,应该可以实现所需的

热点排行