SendKeys.Send("{ENTER}")
我想知道的是,从可检测性的角度来看,如果反作弊引擎更容易检测到这样的东西(使用SendMessage):
public static voID SendKeystroke(ushort k){ const uint WM_KEYDOWN = 0x100; const uint WM_SYSCOMMAND = 0x018; const uint SC_CLOSE = 0x053; IntPtr WindowToFind = FinDWindow(null,"UnTitled1 - Notepad++"); IntPtr result3 = SendMessage(WindowToFind,WM_KEYDOWN,((IntPtr)k),(IntPtr)0);}SendKeystroke(Keys.Enter);
最后,游戏会收到输入密钥的keydown事件,对吧?
解决方法 > SendKeys.Send通常使用sendinput.基于日志挂钩的替代方法对于UAC是不可行的,因此我们假设SendKeys.Send解析为sendinput.> SendMessage以同步方式将消息直接传递给窗口过程.
因此,这更容易检测.好吧,肯定答案是SendMessage.这些是到达窗口过程的输入消息,而没有通过调用GetMessage从队列中取出.这很容易被发现.您只需记录有关从队列中提取的最新消息的一些信息,并在窗口过程中,根据最新排队的消息检查消息.
现在,区分sendinput和真实的人类输入可能比这更难.我很确定这是可能的.一种方法是安装低级键盘钩子并查找LLKHF_INJECTED标志.更难,但不是那么难.
总结以上是内存溢出为你收集整理的c# – 向应用程序发送击键,SendKeys.Send()vs SendMessage()全部内容,希望文章能够帮你解决c# – 向应用程序发送击键,SendKeys.Send()vs SendMessage()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)