Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi 如何向键盘记录器中注入额外的按键?_Winapi_Keyboard_Hook_Setwindowshookex - Fatal编程技术网

Winapi 如何向键盘记录器中注入额外的按键?

Winapi 如何向键盘记录器中注入额外的按键?,winapi,keyboard,hook,setwindowshookex,Winapi,Keyboard,Hook,Setwindowshookex,我的Win8机器上有一个键盘记录器。没有什么可怕的:它执行一些有用的额外工作。实际上,它非常有用,我想在afk时触发它的一些函数。当然,AutoIt和这样的功能是不起作用的(我已经检查过了):记录器连接到一个低级键盘挂钩(我猜),而真正的键盘挂钩并不是由虚拟键盘事件触发的(我相信) 基本上,我需要一个虚拟键盘与真正的外观相似的按键 (编辑:我已经删除了我自己的“想法”如何解决这个问题,不管怎么说都很糟糕,现在我有了更多的理解) 正在尝试SendInput以及它不起作用的原因。 人们建议尝试Se

我的Win8机器上有一个键盘记录器。没有什么可怕的:它执行一些有用的额外工作。实际上,它非常有用,我想在afk时触发它的一些函数。当然,AutoIt和这样的功能是不起作用的(我已经检查过了):记录器连接到一个低级键盘挂钩(我猜),而真正的键盘挂钩并不是由虚拟键盘事件触发的(我相信)

基本上,我需要一个虚拟键盘与真正的外观相似的按键

(编辑:我已经删除了我自己的“想法”如何解决这个问题,不管怎么说都很糟糕,现在我有了更多的理解)


正在尝试SendInput以及它不起作用的原因。 人们建议尝试SendInput。简而言之:它不起作用,因为我已经成功地将pythonw.exe的完整性级别提高到了很高的级别,但是“键盘记录器”在系统级别上运行,并且,如中所述

应用程序只允许将输入注入到 处于相同或更低的完整性级别

我在,的评论中找到了一个非常好的python SendInput实现。
要检查流程的“完整性级别”,可以使用ProcessExplorer,查看/选择列,检查“完整性级别”。
ProcessExplorer显示我的pythonw.exe,我在IL“高”处“以管理员身份运行”,但AcrossServer、AcrossService和派生的conhost.exe都有IL“系统”。(是的,我正在尝试将按键插入到非常漂亮的蓝牙键盘模拟器中)


下一步可能采取的步骤。
  • 将我的应用程序的完整性级别提升到系统:
    • 使其成为windows服务
    • 使其成为设备(较少)驱动程序
    • 有更简单的吗?或
  • 将CrossService的完整性级别降低到(至少)高:
    • 可能吗编辑:可以在控制面板/服务中将登录帐户更改为我自己。不幸的是,下降时,Accross停止工作
  • 在Windows上跨服务器创建Python等价物
    数字3似乎是最有社会价值的,而且似乎比创建一个专门的设备驱动程序更容易:)但我是否错过了一些更简单的可能性?

    。感谢@IInspectable指向SendInput文档。有一个我以前忽略的重要信息:
    应用程序只允许将输入注入到具有相同或更低完整性级别的应用程序中。
    我尝试使用运行“作为管理员”的自动热键脚本。到目前为止还没有成功,但这可能是我的错误(测试不是很简单)。我将使用Python接口发送输入(见注释),并将发布结果。我正在检查我的Python代码是否以管理员身份运行;2.我发送“down”用于RCONTROL和LCONTROL;3.我检查GetAsyncKeyState(向下)和GetAsyncKeyState(向上),然后发送“向上”和“向上”两个键,但在物理键上执行ok时,“键盘记录器”仍然忽略我的虚拟按键。感谢@IInspectable指向SendInput文档。有一个我以前忽略的重要信息:
    应用程序只允许将输入注入到具有相同或更低完整性级别的应用程序中。
    我尝试使用运行“作为管理员”的自动热键脚本。到目前为止还没有成功,但这可能是我的错误(测试不是很简单)。我将使用Python接口发送输入(见注释),并将发布结果。我正在检查我的Python代码是否以管理员身份运行;2.我发送“down”用于RCONTROL和LCONTROL;3.我检查GetAsyncKeyState中的两个键(向下),然后发送“向上”,但“键盘记录器”在对物理键执行ok时忽略了我的虚拟按键。