C++ 捕获键盘输入而不关注程序窗口

C++ 捕获键盘输入而不关注程序窗口,c++,winapi,input,keyboard,C++,Winapi,Input,Keyboard,我正在做一个VoIP客户端,我想启动/停止特定输入的WM_KEYDOWN和WM_keydup消息,比如K。当主窗口有焦点时,这是np,但如何在窗口外启用它?例如,如果窗口没有对焦,而我只是在看桌面或正在玩视频游戏。一个人是如何做这样的事情的?我不知道从哪里开始 还有,我猜你不得不在程序之外对每一个输入进行民意调查,这很昂贵吗 win32 C++ +btw 需要安装键盘钩子: 但是,如果有东西窃取了每个正在运行的应用程序的键盘消息,这可能会非常麻烦。我想你不希望这样-如果我在Word中键入一个

我正在做一个VoIP客户端,我想启动/停止特定输入的WM_KEYDOWN和WM_keydup消息,比如K。当主窗口有焦点时,这是np,但如何在窗口外启用它?例如,如果窗口没有对焦,而我只是在看桌面或正在玩视频游戏。一个人是如何做这样的事情的?我不知道从哪里开始

还有,我猜你不得不在程序之外对每一个输入进行民意调查,这很昂贵吗


win32 C++ +btw

需要安装键盘钩子:


但是,如果有东西窃取了每个正在运行的应用程序的键盘消息,这可能会非常麻烦。

我想你不希望这样-如果我在Word中键入一个文档并点击了K,当你的应用程序弹出而不是我的文档中出现“K”时,我会非常生气


Windows允许您将快捷键指定给桌面上的图标,但它将快捷键限制为功能键或包含Alt和Ctrl的组合键。右键单击桌面图标并转到属性,然后查找标记为“快捷键”的字段。

您认为skype/ventrilo等应用程序就是这样管理的吗?其想法是在按下K时启用录制,例如,像ventrilo/teamspeak/skype那样。你认为他们会这样做吗?是的,他们会。(这或原始输入函数,但原始输入函数禁用了低级钩子,我认为它们会使用其他低级钩子。可能是错误的。)