2

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

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

4

2 回答 2

1

您可以挂钩要从中获取信息的窗口的设备 API,然后如果鼠标移动,则当用户移动鼠标时可能不会调用 api,但如果 logmein 这样做,则它可能会调用一些类似 SetMousePointerPos 的 C WinAPI。

于 2013-06-17T21:16:58.270 回答
0

自发布以来,我遇到了这篇基本上回答了这个问题的帖子。

C# 获取鼠标句柄 (GetRawInputDeviceInfo)

对于那些想要使用 WPF 而不是 WinForms(如上例使用)的人,我想补充一点,请查看 ComponentDispatcher.ThreadFilterMessage(用于 WPF)或 IMessageFilter(Windows 窗体)。

我根据上面的帖子写了几个程序(一个基本上是上面的帖子,有一些小的补充,另一个是 WPF(与 WinForms 相对))。如果我能找到 GitHub,我会发布所有代码并在此处添加评论。但是上面的帖子绝对可以满足您的所有需求。

于 2013-06-22T23:59:55.813 回答