无法在 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 缓存