关于键盘钩子问题,#usehook/#InstallKeybdHook

昨天,我通过一番努力解答了以为一位网友的问题(详细情况见这里),不少网友看到后都给予了支持,也有部分网友将自己积压多年的问题,拿出来询问,一位有心的网友,看到我给出的示例代码中用到了#usehook这个命令,疑惑不解特来询问(问题和解答在这里),回答之后略有感慨啊!看来大家对AutohotKey的疑问还是蛮多的,希望官网能意识到这个问题吧!今天写这篇文章主要帮大家解惑两个问题。希望对大家能有一些帮助!也希望志同道合的朋友一起来我这里探讨学习。

NO1 使用钩子和不使用钩子有什么区别?我怎么感受不到呢?怎么使用呢?

问题一股脑的都出来,咱们一个一个解答!

为什么我感受不到使用钩子和不使用钩子的区别?

因为官网给出的例子太烂了!来看下:

  1. ;官方例子
  2. #UseHook ; 强制从这里往后的热键使用键盘钩子。
  3. #x::MsgBox, This hotkey will be implemented with the hook.
  4. #y::MsgBox, And this one too.
  5. #UseHook off ;这里之后钩子取消
  6. #z::MsgBox, But not this one.

其实,在很多时候我们是感受不到钩子作用的,比如官方这个例子Win+x、Win+y、Win+z,如果不使用消息框给提示,我们根本不知道还有用了钩子的!那么这个例子就有点牵强附会,不知所以了。

官方的帮助中有这么一句话,默认情况下, 使用 键盘钩子 的热键不会被 Send 命令的方法触发,我觉着这才是重点,于是乎我就想到一个例子:

也是一位网友的需求吧!F1本身是帮助的快捷键,但是他想使用F1发送一段自己写的代码,shift+F1发送F1本身的功能。他写了这么一段代码:

  1. F1::
  2. ; his code...
  3. msgBox, Code!
  4. return
  5.  
  6. +F1::Send, {F1}

这时候问题来了,现在按下F1或者按下shift+F1都是消息框Code!这时候就困住了这位兄弟,他跑来问题什么情况?哈哈  答案上边就给出了!这时候就用到钩子了!

我给他的代码添加了一行代码完美解决!

  1. #UseHook, On
  2.  
  3. F1::
  4. ; his code...
  5. msgBox, Code!
  6. return
  7.  
  8. +F1::Send, {F1}

说到这里,我们有必要白话说一下,钩子是干嘛的!其实这个名字非常形象了,下面给配张图看的更清楚!

关于键盘钩子问题,#usehook/#InstallKeybdHook

上边这个图的意思就是,比如上边是一条河,沟子就是在旁边挖个沟,让水先流我这来,我可以把干净水喝了,不太干净洗洗脚,再加点什么工业污水、生活污水,再还给河道。哈哈就这么个意思吧!这就是沟子!

autohotkey中,send对你这旁边的沟子不承认而已!所以上边的问题就可以这么解决。也是使用钩子的一个区别吧,在上边你的代码区,你可以任意让系统执行你写的代码了!关于使用不使用钩子就说这些吧!钩子、沟子哪个都够形象的。

NO2 #usehook/#InstallKeybdHook,这两个都是启用钩子,什么区别?

其实这两个命令都是安装钩子的意思,让我们有点丈二和尚摸不着头脑。哈哈  autohotkey就是这么灵活!

其实这两命令的使用起来没有什么区别!所以也不举例子了!

区别在内存使用上!

换句话说,#InstallKeybdHook这个命令,傻瓜一点,用不用我先把沟刨出来,先把内存占上,#usehook这个命令呢,就聪明一点,脚本中有热键我才刨沟,没有我就不用搞内存了。

这两个命令具体怎么用看个人了! 游戏外挂、干些什么坏事都离不开钩子,这里就不详细讲了。如果大家有兴趣可以自行 研究一下。

今天文章先到这里吧!也许你有更好的建议,欢迎与我交流!本文更新地址在这里!

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

捐赠是对创作者最大的肯定!

给TA捐赠
共0人
如果帮到您了,请捐赠,谢谢!
    其他教程

    遭遇连环坑,惭愧啊!autohotkey学的不精啊!掩饰键问题总结(#MenuMaskKey )!

    2018-9-13 21:44:19

    其他

    关于#MenuMaskKey的使用

    2018-9-16 19:27:34

    4 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
    1. safeblood

      第三段代码钩子没有关闭,会不会导致什么问题

      • hexuren

        什么问题 ?

    2. OO

      ✗棒棒的✗

    3. 西斯仔

      学习到好东西了

    个人中心
    购物车
    优惠劵
    私信列表
    搜索