【问题标题】:Unable to detect touch inside internet explorer or microsoft edge无法在 Internet Explorer 或 Microsoft Edge 中检测到触摸
【发布时间】:2017-11-01 19:05:04
【问题描述】:

我已经为 WH_GETMESSAGE 和 WH_CALLWNDPROC 设置了一个全局挂钩。我正在尝试检测屏幕上的触摸。除了 Microsoft Edge 和 Internet Explorer 的客户区之外,我可以对屏幕中的所有内容执行此操作。

也就是说,我的意思是我无法检测到是否有人触摸了 Internet Explorer 窗口的开放边缘或客户区。但同样适用于 Google Chrome 或其他浏览器。知道为什么会发生这种情况,我应该采取什么方法来处理它?

我在下面分享了一部分我的钩子 proc 代码。

LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    switch (lpMsg->message)
    {
    case WM_POINTERDOWN:
        UINT32 pointerId = GET_POINTERID_WPARAM(lpMsg->wParam);
        POINTER_INPUT_TYPE pointerType;
        GetPointerType(pointerId, &pointerType);
 
        if (pointerType == PT_TOUCH)
        {
                   MessageBox(NULL, TEXT("Its a touch"), TEXT("In a DLL"), MB_OK);
 

        }
        return CallNextHookEx(NULL, nCode, wParam, lParam);
    }
    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

【问题讨论】:

    标签: c++ windows winapi hook microsoft-edge


    【解决方案1】:

    挂钩 64 位 Windows 桌面上的所有应用程序 安装,安装一个32位全局钩子和一个64位全局钩子, 每个都来自适当的流程,并确保不断发送消息 在挂钩应用程序中,以避免阻塞正常运行。如果 您已经有一个 32 位全局挂钩应用程序,但它没有 需要在每个应用程序的上下文中运行,您可能不需要创建 64 位版本。

    上面的摘录来自下面提到的链接中的某个地方: https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx

    【讨论】:

      猜你喜欢
      • 2015-10-25
      • 2015-10-23
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      相关资源
      最近更新 更多