2012-04-11 48 views
1

是否有可能在没有SendMessagePostMessage API的情况下将密钥发送到程序?发送不带SendMessage和PostMessage的密钥

+0

确实有方法不涉及您使用这些特定的apis,但最终仍然会使用消息队列发送密钥。为什么不直接使用它们? – Cray 2012-04-11 13:21:57

+0

由于发送/发布WM_CHAR消息非常简单,我从来没有尝试过其他任何东西。 – 2012-04-11 13:23:28

回答

16

虚假输入的官方方式不涉及直接发送或发布Windows消息。相反,您打算拨打SendInput

当您使用SendInput时,它与实际按下真正的按键无法区分。当您调用SendInput虚假键盘输入时,系统最终将消息发布到创建具有键盘焦点的窗口的前台线程的消息队列中。

+0

“难以区分”:许多拥有高级bot保护的扑克客户往往不同意:)。但通常,一个正常的程序不会有任何区别。 – Cray 2012-04-11 14:12:17

+0

@Cray扑克客户端如何发现差异? – Alex 2012-05-05 13:37:19

+0

最后我在研究这个(比如几年前),有很多关于GetAsyncKeyState的讨论,以及SendInput如何欺骗这个函数。但这显然是最简单的检查方法之一(它甚至是一个记录的ring3函数,没有什么鬼鬼祟祟的),帽子比这更深。 – Cray 2012-05-05 17:38:53