zoukankan      html  css  js  c++  java
  • 关于在IWebBrowser中无法响应Ctrl+C等快捷键的解决方法

    最近在WIN32项目中用到IWebBrower2接口,发现复制粘贴等快捷键无法使用,后再网上查询到可以再消息循环阶段拦截IE的消息进行处理,代码如下:

     1 if (msg.message >= WM_KEYDOWN  && msg.message < WM_KEYLAST) {
     2       TCHAR szClassName[256] = {0};
     3       ::GetClassName(msg.hwnd, szClassName, 256);
     4       if (_tcsicmp(szClassName, _T("Internet Explorer_Server")) == 0) {
     5         HMODULE hModule = ::LoadLibrary(_T("OLEACC.DLL"));
     6         if (hModule) {
     7           LRESULT lRes;
     8           UINT nMsg = ::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
     9           ::SendMessageTimeout(msg.hwnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes);
    10           LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress(hModule, _T("ObjectFromLresult"));
    11           if (pfObjectFromLresult)  {
    12             CComPtr<IServiceProvider> spServiceProv;
    13             HRESULT hr = (*pfObjectFromLresult)(lRes, IID_IServiceProvider, 0, (void**)&spServiceProv);
    14             if (SUCCEEDED(hr)) {
    15               IWebBrowser2* pWebBrowser2 = NULL;
    16               hr = spServiceProv->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pWebBrowser2);
    17               IOleInPlaceActiveObject* pOleInPlaceActiveObject = NULL;
    18               hr = pWebBrowser2->QueryInterface(IID_IOleInPlaceActiveObject, (LPVOID*)&pOleInPlaceActiveObject);
    19               if (hr == S_OK && pOleInPlaceActiveObject) {
    20                 hr = pOleInPlaceActiveObject->TranslateAccelerator(&msg);
    21                 DWORD dw = ::GetLastError();
    22                 if (hr == S_OK) {
    23                   continue;
    24                 }
    25               }
    26             }
    27           }
    28           ::FreeLibrary( hModule );
    29         }
    30       }
    31     }
  • 相关阅读:
    LeetCode
    LeetCode
    Django ORM 查询
    The Usage of Pymongo
    MongoDB基操
    Django内置auth模块中login_required装饰器用于类视图的优雅方式
    Django Session配置
    Python虚拟环境
    遇见Flask-Script
    Git使用手册
  • 原文地址:https://www.cnblogs.com/siceblue/p/3133491.html
Copyright © 2011-2022 走看看