IWebBrowser2控件快捷键,DEL,TAB等无效的解决办法

在普通情况下,IWebBrowser2控件加入到窗口中时,浏览器的快捷键,包括DEL,TAB等特殊键都不能使用。这个不是控件的Bug,而是一种特性。要让控件处理这些按键,需要通过webBrowser插件的IOleInPlaceActiveObject来处理。

具体操作是在主窗口的事件循环里处理。步骤如下:

//窗口主循环线程
while(bRet=GetMessage(&msg,NULL,0,0)!=0){
	if(bRet==-1) break;
	TranslateMessage(&msg);

	if(IsDialogMessage(WebBrowser2控件窗口句柄,&msg)){//如果是控件窗口的消息
		QueryInterface取得IWebBrowser2的IOleInPlaceActiveObject
		调用IOleInPlaceActiveObject的TranslateAccelerator函数,参数是&msg
	}
	else DispatchMessage(&msg); 
}

C语言使用者在QueryInterface和调用COM对象函数时,可以用我另一编关于COM的C调用的函数库。

Join the Conversation

3 Comments

Your email address will not be published. Required fields are marked *

  1. 你怎么获取的?应该是调用IWebBrowser2的QueryInterface,同时要使用IOleInPlaceActiveObject正确的IID才能成功拿到的。