用c#或c++确定谁在PC上控制鼠标(以编程方式)
Determining (programmatically) who controls the mouse on a PC using C# or C++
是否有一种方法可以确定谁在PC上以编程方式控制鼠标(和哪个鼠标)?我最近安装了LogMeIn (logmein.com),并想知道是否有可能(1)告诉程序内的鼠标是否被直接用户或远程用户点击/移动,(2)编写一个独立的程序,简单地显示鼠标事件(在任何应用程序上),以及鼠标事件是否由本地或远程用户生成。我对Win32钩子有点熟悉,但不认为它们可以提供这种信息。关于(1),这似乎是一个常见的要求。例如,"只允许用户在本地完成与密码更改相关的按键"。或者类似的东西
次要的(实际上只是学术兴趣)是判断本地用户是在使用鼠标还是触控板的问题。
你可以钩住你想要获取信息的窗口的设备API,然后如果鼠标移动,API可能不会在用户移动鼠标时被调用,但如果logmein做了,那么它可能会调用一些SetMousePointerPos-like C WinAPI
自从发帖以来,我看到了这篇文章,它基本上回答了这个问题。
c#获取鼠标句柄(GetRawInputDeviceInfo)
我想补充的是,对于那些想要使用WPF而不是WinForms的人(如上面的例子所使用的),请查看ComponentDispatcher。ThreadFilterMessage(用于WPF)或IMessageFilter (Windows窗体).
我根据上面的帖子写了几个程序(一个基本上是上面的帖子,有一些小的添加,另一个是WPF(与WinForms相反))。如果我能弄清楚GitHub,我会张贴所有的代码,并在这里添加注释。但是上面的帖子绝对给了你所有你需要的。
相关文章:
- 控制允许动态运行c++的并发操作数
- 从控制台中删除最后打印的元素
- WinAPI挂钩鼠标
- 是否可以使用if constexpr删除控制流语句
- 无法在windows控制台中为C++程序提供必要的输入
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- 控制到达非空函数clang(-Wreturn-type)的末尾
- 查找 GCD:并非所有控制路径都返回值
- 通过 API 控制 DJI 相机
- 我可以控制鼠标属性,例如点击速度
- 控制操作系统鼠标单击
- 用于控制鼠标或键盘的程序
- 用c#或c++确定谁在PC上控制鼠标(以编程方式)
- 使用鼠标控制终端的c++
- Qt鼠标控制在触摸和非触摸设备上的旋转
- 鼠标位置/控制终端,OSX