V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
stupidcat
V2EX  ›  问与答

“键盘记录”和“全局快捷键”的区别是什么?

  •  
  •   stupidcat · 2015-03-17 17:16:42 +08:00 · 1725 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近用C++“写”(网上抄~)了个Windows键盘记录器,本质就是用Windows.h里的GetAsyncKeyState(char key)函数,轮询键盘上的每个按键。
    我随后在虚拟机里装了360,然后运行这个程序,一下就检测出来“该程序正在记录您的键盘输入”了。
    但是我又想到,某些软件的全局快捷键,也是在任何时候都可以响应的。例如,我把“ctrl+alt+1”设置为音乐播放器的“播放/暂停”快捷键,这个快捷键组合即使在玩全屏幕游戏的时候也可以正常起作用。还有QQ的接收消息快捷键等。

    现在问题来了:
    为什么这些快捷键不会被安全软件报警为“正在记录键盘输入”呢?快捷键走的是另一套机制吗?
    如果是另一套机制,那能不能通过该机制,来记录键盘输入,而不被安全软件发现?
    4 条回复    2015-03-17 18:50:33 +08:00
    yfdyh000
        1
    yfdyh000  
       2015-03-17 17:26:28 +08:00   ❤️ 1
    bestsanmao
        2
    bestsanmao  
       2015-03-17 17:59:25 +08:00   ❤️ 2
    1楼正解
    全局快捷键并不是轮询键盘状态,而是向系统注册一个热键
    wzxjohn
        3
    wzxjohn  
       2015-03-17 18:04:52 +08:00 via iPhone   ❤️ 1
    而且快捷键必须同时按住制定的控制键,所以跟键盘纪录完全不一样。。。
    xenme
        4
    xenme  
       2015-03-17 18:50:33 +08:00   ❤️ 2
    同上面的解释,正常来说快捷键注册后,当系统发现有人按了快捷键,会主动去通知注册了该快捷键的程序,就不用你一直浪费CPU在那里等了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2857 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:45 · PVG 15:45 · LAX 23:45 · JFK 02:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.