我遇到了一个问题,我试图通过在c#中编写程序来解决这个问题,但它似乎没有我需要的信息。前段时间我的窗口每隔x秒开始产生一次点击,我想知道是否有方法检查哪个进程生成了这样的事件,以便我可以处理它。我基本上在C#中检查了MouseEventArgs,但没有找到任何有用的东西。
另一方面: 我正在开发一款游戏,我希望能够防范机器人。有没有办法检查传递给游戏的事件来自哪里?如果它是由硬件鼠标或某些进程生成的?如果它是由某个进程生成的,那么有一种方法可以知道哪个进程生成了这样的事件(如按键,鼠标单击)
答案 0 :(得分:0)
您必须在被调用的例程中设置断点,并查看调用堆栈,该进程启动了该事件。如果你运气好的话,这是你自己的惯例之一。如果你运气不好,这是外部资源的常规。
答案 1 :(得分:0)
AFAIK你得到的最多信息是使用低级钩子钩住键盘(见LowLevelKeyboardProc
)你没有生成击键的过程,但在KBDLLHOOKSTRUCT.flags
你会得到LLKHF_INJECTED
位设置,您将知道它被注入。
要知道它是否定位到您的应用GetForegroundWindow
,GetWindowThreadProcessId
会为您提供。
对于您的“游戏”案例,您还需要检查它是否不需要提升,因为它会让您的用户感到烦恼。