有没有办法以编程方式确定谁在PC上控制鼠标(以及哪只鼠标)?我最近安装了LogMeIn(logmein.com)并想知道是否可以(1)在程序中告诉鼠标是由直接用户还是远程用户点击/移动,(2)写一个独立的只显示鼠标事件(在任何应用程序上)以及鼠标事件是否由本地或远程用户生成的程序。我对Win32钩子有点熟悉,但不认为他们可以提供这种信息。关于(1)这似乎是一个共同的要求。即“只允许用户完成与密码更改相关的按钮按下,如果他是本地的......”或类似的东西。
次要的(实际上只是学术兴趣)是告诉本地用户是使用鼠标还是使用触控板的问题。
谢谢, 戴夫
答案 0 :(得分:1)
你可以挂钩你想从中获取信息的windows的设备API,然后如果鼠标移动api可能在用户移动鼠标时没有调用,但是如果logmein那么它可能会调用一些类似SetMousePointerPos的C WinAPI。
答案 1 :(得分:0)
自发布以来,我发现这篇帖子基本上回答了这个问题。
C# Get Mouse handle (GetRawInputDeviceInfo)
我想为那些想要使用WPF而不是WinForms的人添加(如上面的示例所示),请查看ComponentDispatcher.ThreadFilterMessage(对于WPF)或IMessageFilter(Windows窗体)。
我根据上面的帖子写了几个程序(一个基本上是上面的帖子,有一些小的添加,另一个是WPF(而不是WinForms))。如果我能找出GitHub,我会发布所有代码并在此处添加评论。但上面的贴子肯定会为您提供所需的一切。