确定(以编程方式)使用C#或C ++在PC上控制鼠标的人员

时间:2013-06-13 00:17:05

标签: c# c++ windows mouse pc

有没有办法以编程方式确定谁在PC上控制鼠标(以及哪只鼠标)?我最近安装了LogMeIn(logmein.com)并想知道是否可以(1)在程序中告诉鼠标是由直接用户还是远程用户点击/移动,(2)写一个独立的只显示鼠标事件(在任何应用程序上)以及鼠标事件是否由本地或远程用户生成的程序。我对Win32钩子有点熟悉,但不认为他们可以提供这种信息。关于(1)这似乎是一个共同的要求。即“只允许用户完成与密码更改相关的按钮按下,如果他是本地的......”或类似的东西。

次要的(实际上只是学术兴趣)是告诉本地用户是使用鼠标还是使用触控板的问题。

谢谢, 戴夫

2 个答案:

答案 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,我会发布所有代码并在此处添加评论。但上面的贴子肯定会为您提供所需的一切。