【问题标题】:WMI: How to differentiate between Wireless mouse and touch screenWMI:如何区分无线鼠标和触摸屏
【发布时间】:2009-11-19 16:33:23
【问题描述】:
我正在使用 Win32_PointingDevice 类来检测连接到系统的鼠标。我在一台有触摸屏的机器上运行我的设备发现脚本。该发现显示了 3 个指点设备,直接连接的 USB 鼠标、无线鼠标和触摸屏。我的问题是如何区分USB鼠标和触摸屏。
如果 Win32_PointingDevice 类不提供信息,那么是否有任何其他方法可以用来获取鼠标和触摸信息。
这是我上一个问题WMI Class for wireless mouse的扩展
【问题讨论】:
标签:
windows
hardware
wmi
device
hardware-interface
【解决方案1】:
Win32_PointingDevice.PointingType?
没试过(没有触摸屏),但是Win32_PointingDevice的MSDN文档说PointingType = 8是用来表示触摸屏的。
(但是,我的鼠标显示为“2”(“未知”)而不是“3”(“鼠标”)——因此这可能取决于您的触摸屏驱动程序编写者在实现其 WMI 属性时有多彻底...)
【解决方案2】:
也许您可以使用 WH_MOUSE_LL / WH_MOUSE 钩子通过函数 GetMessageExtraInfo()
获取额外信息
#define MI_WP_SIGNATURE 0xFF515700
#define SIGNATURE_MASK 0xFFFFFF00
#define IsPenEvent(dw) (((dw) & SIGNATURE_MASK) == MI_WP_SIGNATURE)
#define IsTouchEvent(dw) (((dw) & 0x80) == 0x80)
if(IsPenEvent(GetMessageExtraInfo()) && IsTOuchEvent(GetMessageExtraInfo())) {
// do somthing
}