用c#或c++确定谁在PC上控制鼠标(以编程方式)

本文关键字:鼠标 控制 编程 方式 PC c++ | 更新日期: 2023-09-27 18:18:21

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

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

用c#或c++确定谁在PC上控制鼠标(以编程方式)

你可以钩住你想要获取信息的窗口的设备API,然后如果鼠标移动,API可能不会在用户移动鼠标时被调用,但如果logmein做了,那么它可能会调用一些SetMousePointerPos-like C WinAPI

自从发帖以来,我看到了这篇文章,它基本上回答了这个问题。

c#获取鼠标句柄(GetRawInputDeviceInfo)

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

我根据上面的帖子写了几个程序(一个基本上是上面的帖子,有一些小的添加,另一个是WPF(与WinForms相反))。如果我能弄清楚GitHub,我会张贴所有的代码,并在这里添加注释。但是上面的帖子绝对给了你所有你需要的。