关于在IWebBrowser中无法响应Ctrl+C等快捷键的解决方法
2013-06-13 09:29
387 查看
最近在WIN32项目中用到IWebBrower2接口,发现复制粘贴等快捷键无法使用,后再网上查询到可以再消息循环阶段拦截IE的消息进行处理,代码如下:
if (msg.message >= WM_KEYDOWN && msg.message < WM_KEYLAST) { TCHAR szClassName[256] = {0}; ::GetClassName(msg.hwnd, szClassName, 256); if (_tcsicmp(szClassName, _T("Internet Explorer_Server")) == 0) { HMODULE hModule = ::LoadLibrary(_T("OLEACC.DLL")); if (hModule) { LRESULT lRes; UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT")); ::SendMessageTimeout(msg.hwnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes); LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hModule, _T("ObjectFromLresult")); if (pfObjectFromLresult) { CComPtr<IServiceProvider> spServiceProv; HRESULT hr = (*pfObjectFromLresult)(lRes, IID_IServiceProvider, 0, (void**)&spServiceProv); if (SUCCEEDED(hr)) { IWebBrowser2* pWebBrowser2 = NULL; hr = spServiceProv->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pWebBrowser2); IOleInPlaceActiveObject* pOleInPlaceActiveObject = NULL; hr = pWebBrowser2->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID*)&pOleInPlaceActiveObject); if (hr == S_OK && pOleInPlaceActiveObject) { hr = pOleInPlaceActiveObject->TranslateAccelerator(&msg); DWORD dw = ::GetLastError(); if (hr == S_OK) { continue; } } } } ::FreeLibrary( hModule ); } } }
相关文章推荐
- eclipse中使用快捷键ctrl+shift+F无法格式化代码的问题解决方法
- cocos2d-x 3.x 关于cocostudio的UI将事件吃掉,场景Layer无法响应手势的问题解决方法
- 关于VS2010 转到函数定义无响应 以及MFC项目双击控件无法跳转到响应函数解决方法
- 关于VS2005 无法使用切换到设计视图的解决方法 (winxp sp2)
- 关于webbrowser无法播放html5的解决方法
- 关于SqlServer服务无法启动的症状分析和解决方法
- 会话状态已创建一个会话 ID,但由于响应已被应用程序刷新而无法保存它 解决方法之一
- 关于windows环境下QT开发ICE程序无法正确连接类库的解决方法
- 关于“Exchange Server 地址列表服务未能响应”的错误解决方法。
- VS2010关于WindowsService 制作安装程序包,无法自动install的问题解决方法
- 关于ubuntu系统boot分区空间不足而又无法卸载旧内核的解决方法
- 关于myeclipse无法使用ctrl+shift+f快捷键格式化代码的问题
- IIS无法启动提示“服务没有及时响应启动或控制请求”的解决方法[图解]
- Cocos2d-X3.0bate_关于一些“无法解析的外部符号”的配置问题解决方法
- 关于SqlServer服务无法启动的症状分析和解决方法
- 关于Appserv无法打开localhost问题的解决方法
- AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法
- 关于it-ebooks.info无法下载的一种解决方法
- 关于MySQL5.6.25在Win7 64bit下重装后无法启动的解决方法
- (应用程序无法正常启动0xc0000142) 关于win10周年版更新后无法正常使用vc6.0问题的解决方法