如何检查生成click事件的进程

时间:2013-11-08 08:03:43

标签: c#

我遇到了一个问题,我试图通过在c#中编写程序来解决这个问题,但它似乎没有我需要的信息。前段时间我的窗口每隔x秒开始产生一次点击,我想知道是否有方法检查哪个进程生成了这样的事件,以便我可以处理它。我基本上在C#中检查了MouseEventArgs,但没有找到任何有用的东西。

另一方面: 我正在开发一款游戏,我希望能够防范机器人。有没有办法检查传递给游戏的事件来自哪里?如果它是由硬件鼠标或某些进程生成的?如果它是由某个进程生成的,那么有一种方法可以知道哪个进程生成了这样的事件(如按键,鼠标单击)

2 个答案:

答案 0 :(得分:0)

您必须在被调用的例程中设置断点,并查看调用堆栈,该进程启动了该事件。如果你运气好的话,这是你自己的惯例之一。如果你运气不好,这是外部资源的常规。

答案 1 :(得分:0)

AFAIK你得到的最多信息是使用低级钩子钩住键盘(见LowLevelKeyboardProc)你没有生成击键的过程,但在KBDLLHOOKSTRUCT.flags你会得到LLKHF_INJECTED位设置,您将知道它被注入。

要知道它是否定位到您的应用GetForegroundWindowGetWindowThreadProcessId会为您提供。

对于您的“游戏”案例,您还需要检查它是否不需要提升,因为它会让您的用户感到烦恼。