无法在 Internet Explorer 或 Microsoft Edge 中检测到触摸

Posted

技术标签:

【中文标题】无法在 Internet Explorer 或 Microsoft Edge 中检测到触摸【英文标题】:Unable to detect touch inside internet explorer or 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);

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于无法在 Internet Explorer 或 Microsoft Edge 中检测到触摸的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Internet Explorer 中将样式表添加到 iframe

无法在 Internet Explorer 8 中显示 SVG 图表

如何使用 javascript 或 php 禁用 Internet Explorer 缓存

Internet Explorer无法启动怎么办?

如何从 Internet Explorer 11 降级到 Internet Explorer 10?

CSS3 中的转换在 Firefox 或 Internet Explorer 中不起作用