0

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

也以另一种方式:我正在开发一款游戏,我想对机器人进行保护。有没有办法检查传递给游戏的事件来自哪里?如果它是由硬件鼠标或某些进程生成的?如果它是由某个进程生成的,是否有办法知道哪个进程生成了这样的事件(如按键、鼠标单击)

4

2 回答 2

0

AFAIK 您将获得的最多信息是使用低级挂钩来挂钩键盘(请参阅LowLevelKeyboardProc),您将没有生成击键的过程,但 KBDLLHOOKSTRUCT.flags您将LLKHF_INJECTED设置位并且您会知道它已被注入。

要知道它是否针对您的应用程序GetForegroundWindowGetWindowThreadProcessId会给您。

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

于 2013-11-08T08:22:20.503 回答
0

您必须在被调用的例程中设置断点,并查看调用堆栈中哪个进程启动了事件。如果你幸运的话,这是你自己的例行公事之一。如果你不走运,这是外部来源的例行公事。

于 2013-11-08T08:07:08.730 回答