是否有一种方法可以模拟C++;在某种程度上,没有任何软件可以告诉我';I’我没有按这个键 我已经尝试了SeNeDePin和KEYBDYEL事件,有时它们工作得很好,但是一些运行的程序不承认我想用C++代码来按下一个键。C++中的信号是否与当我机械地按下一个键时发出的信号相同(这样就没有程序能分辨出差异)?< 或者如果C++中不可能,那么在任何其他编程语言中都有可能吗? 是否存在一个C++中的信号,它与当我机械地按下一个键时发出的信号相同(这样就没有程序能分辨出它的区别)?

是否有一种方法可以模拟C++;在某种程度上,没有任何软件可以告诉我';I’我没有按这个键 我已经尝试了SeNeDePin和KEYBDYEL事件,有时它们工作得很好,但是一些运行的程序不承认我想用C++代码来按下一个键。C++中的信号是否与当我机械地按下一个键时发出的信号相同(这样就没有程序能分辨出差异)?< 或者如果C++中不可能,那么在任何其他编程语言中都有可能吗? 是否存在一个C++中的信号,它与当我机械地按下一个键时发出的信号相同(这样就没有程序能分辨出它的区别)?,c++,winapi,events,key,signals,C++,Winapi,Events,Key,Signals,这正是SendInput()和keybd\u event()的目的。它们以相同的方式得到处理和路由,因此大多数系统不知道物理事件和注入事件之间的区别 但是,系统中有一个方面确实知道区别:通过SetWindowsHookEx(WH\u keyboard\u LL)的低级键盘挂钩。接收指向结构的指针,该结构的标志成员包含用于注入事件的LLKHF_注入标志。回调可以选择放弃事件,以便它们不会到达应用程序 因此,很可能任何对你的模拟击键没有反应的应用程序都被专门编码为忽略注入的输入 防止这种情况发生的唯

这正是
SendInput()
keybd\u event()
的目的。它们以相同的方式得到处理和路由,因此大多数系统不知道物理事件和注入事件之间的区别

但是,系统中有一个方面确实知道区别:通过
SetWindowsHookEx(WH\u keyboard\u LL)
的低级键盘挂钩。接收指向结构的指针,该结构的
标志
成员包含用于注入事件的
LLKHF_注入
标志。回调可以选择放弃事件,以便它们不会到达应用程序

因此,很可能任何对你的模拟击键没有反应的应用程序都被专门编码为忽略注入的输入

防止这种情况发生的唯一方法(不编写自己的键盘驱动程序)是编写自己的低级键盘挂钩,并在安装其他低级键盘挂钩后安装它。这会将钩子放置在钩链的顶部。然后,只需不调用
CallNextHookEx()
,它就可以跳过其他钩子。钩子是按从最后到第一的顺序调用的。根据文件:

如果nCode大于或等于零,并且钩子过程没有处理消息,强烈建议您调用CallNextHookEx并返回它返回的值否则,安装了WH_键盘所有挂钩的其他应用程序将不会收到挂钩通知,并可能因此行为不正确。如果钩子过程处理了消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链的其余部分或目标窗口过程

然而,如果应用程序在使用键盘钩子忽略注入事件时遇到麻烦,那么它很可能也会考虑钩子顺序,比如定期重新安装钩子,将其放回钩子链的顶部,以避免其他钩子的干扰

是否存在一个C++中的信号,它与当我机械地按下一个键时发出的信号相同(这样就没有程序能分辨出它的区别)? 这正是

SendInput()
keybd\u event()
的目的。它们以相同的方式得到处理和路由,因此大多数系统不知道物理事件和注入事件之间的区别

但是,系统中有一个方面确实知道区别:通过
SetWindowsHookEx(WH\u keyboard\u LL)
的低级键盘挂钩。接收指向结构的指针,该结构的
标志
成员包含用于注入事件的
LLKHF_注入
标志。回调可以选择放弃事件,以便它们不会到达应用程序

因此,很可能任何对你的模拟击键没有反应的应用程序都被专门编码为忽略注入的输入

防止这种情况发生的唯一方法(不编写自己的键盘驱动程序)是编写自己的低级键盘挂钩,并在安装其他低级键盘挂钩后安装它。这会将钩子放置在钩链的顶部。然后,只需不调用
CallNextHookEx()
,它就可以跳过其他钩子。钩子是按从最后到第一的顺序调用的。根据文件:

如果nCode大于或等于零,并且钩子过程没有处理消息,强烈建议您调用CallNextHookEx并返回它返回的值否则,安装了WH_键盘所有挂钩的其他应用程序将不会收到挂钩通知,并可能因此行为不正确。如果钩子过程处理了消息,它可能会返回一个非零值,以防止系统将消息传递给钩子链的其余部分或目标窗口过程


然而,如果一个应用程序在使用键盘钩子忽略注入事件时遇到麻烦,那么它很可能也会考虑钩子顺序,例如,通过周期性地重新安装它的挂钩,使其返回到钩链的顶部,以避免其他钩子的干扰。< / P>一个例子:使用伺服或机械驱动的机械按键,这超出了C++的范围。重新表述你的问题。你可以做到。你走错了方向:如果不可能使用较低级别的Windows API调用,那么从更高级别(如编程语言)任何语言来说都是不可能的。如果你需要输入,看起来它来自一个真实的设备,写一个设备驱动程序。C++没有这个功能。这与任何编程语言都无关。这是一个平台问题。也许你应该停止在网上扑克作弊。一个例子:机械按键使用伺服或一些东西这超出了C++的范围。重新表述你的问题。你可以做到。你走错了方向:如果不可能使用较低级别的Windows API调用,那么从更高级别(如编程语言)任何语言来说都是不可能的。如果你需要输入,看起来它来自一个真实的设备,写一个设备驱动程序。C++没有这个功能。这与任何编程语言都无关。这是一个平台问题。也许你应该停止在线扑克作弊。谢谢,这回答了我的问题