为什么AutoHotkey不能将'RCtrl'用作热键,而AutoIt却不能呢?

约什

CtrlAltWinShift通常被称为修饰键通常它们被组合与其他键如A=F5等等如下该键结合的限制没有。

AutoHotkey为何不能RCtrl用作AutoIt,却可以用作单独的热键?我想知道AutoHotkey使用了哪些技巧来实现该目的。AutoHotkey源自AutoIt v2,所以AutoIt v3无法做到这一点不是很奇怪吗?

这在AutoHotkey中有效:RAlt::Run Notepad,但是以下代码不适用于AutoIt v3(已通过Au3Check检查):

HotKeySet("{RAlt}","RunNotepad")
Func RunNotepad()
   Run('notepad.exe')
EndFunc
马特

首先,您的AutoIt代码将运行,然后立即退出。您需要在其中添加循环以保持程序运行。

我不能说AHK的实现,但是通过在Windows api上测试AutoIt几乎可以肯定地使用了(RegisterHotkey),我不能仅仅获得VK_RMENU密钥。因此,这是Windows的限制,而不是AutoIt的限制。

关于替代实现,以及如何从AutoIt进行此操作,_IsPressed是最简单的选择。通常,您会_IsPressed处于一个循环中,但是如果您希望它的行为更像一个循环,HotkeySet则可以执行以下操作:

#include <Misc.au3>

AdlibRegister(_TestRalt, 20)

While 1
    Sleep(10)
WEnd


Func _RunNotepad()
    ConsoleWrite("Just pretend I ran notepad" & @LF)
EndFunc   ;==>_RunNotepad

Func _TestRalt()
    Local Static $hUser32 = DllOpen("user32.dll")
    Local Static $fPressed = False

    If _IsPressed("A5", $hUser32) Then
        $fPressed = True
    ElseIf $fPressed Then
        _RunNotepad()
        $fPressed = False
    EndIf
EndFunc   ;==>_TestRalt

我怀疑AHK是否可以开箱即用,那么他们正在做一些更复杂的事情,例如键盘挂钩。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么foldr可以在Haskell中的无限列表上工作,而foldl却不能呢?

来自分类Dev

为什么ArrayLists可以存储不同的对象,而数组却不能呢?

来自分类Dev

Autohotkey:无法映射RCtrl + Rshift + Tab:获取语法错误

来自分类Dev

为什么嵌套的子类可以访问其父类的私有成员,但子孙却不能呢?

来自分类Dev

为什么C ++中的void方法可以返回void值,而在其他语言中却不能呢?

来自分类Dev

为什么作为功能的Angular控制器可以工作,而封装中的控制器却不能工作呢?

来自分类Dev

为什么我可以释放内存两次,但是在不同情况下却不能呢?

来自分类Dev

为什么不能将错误归类?

来自分类Dev

为什么不能将哈希值相乘?

来自分类Dev

为什么我可以进场却不能进场?

来自分类Dev

为什么不能将类的实例用作值?

来自分类Dev

为什么不能将String用作类型类?

来自分类Dev

为什么不能将实例属性用作默认参数?

来自分类Dev

为什么不能将UITableViewCell实例用作计算属性?

来自分类Dev

为什么不能将“宽”用作变量名?

来自分类Dev

为什么在MYSQL中不能将UNSIGNED用作FOREIGN KEY?

来自分类Dev

为什么我不能将继承的错误用作SFINAE?

来自分类Dev

为什么不能将实例属性用作默认参数?

来自分类Dev

为什么我不能将插值变量用作varname?

来自分类Dev

为什么我不能将 require 函数的参数用作变量

来自分类Dev

为什么“ Hello World”插件在Chrome中不能运行,而在Firefox中却不能运行?

来自分类Dev

为什么我可以在不声明C的情况下在C中调用函数,而在C ++中却不能呢?

来自分类Dev

为什么有时可以使用NodeJS缓冲区连接音频数据,而有时却不能呢?

来自分类Dev

为什么在FireFox中可以使用脚本控制台编辑DOM,而在IE 11中却不能呢?

来自分类Dev

为什么我将list用作函数的参数,而函数却不能更改实际参数的值,而只能更改形式参数?

来自分类Dev

SCP工作正常,但rsync却不能

来自分类Dev

为什么我不能将数组作为json回显?

来自分类Dev

为什么不能将UIBarButtonItem拖动到导航栏上?

来自分类常见问题

为什么不能将某些特征变成对象

Related 相关文章

  1. 1

    为什么foldr可以在Haskell中的无限列表上工作,而foldl却不能呢?

  2. 2

    为什么ArrayLists可以存储不同的对象,而数组却不能呢?

  3. 3

    Autohotkey:无法映射RCtrl + Rshift + Tab:获取语法错误

  4. 4

    为什么嵌套的子类可以访问其父类的私有成员,但子孙却不能呢?

  5. 5

    为什么C ++中的void方法可以返回void值,而在其他语言中却不能呢?

  6. 6

    为什么作为功能的Angular控制器可以工作,而封装中的控制器却不能工作呢?

  7. 7

    为什么我可以释放内存两次,但是在不同情况下却不能呢?

  8. 8

    为什么不能将错误归类?

  9. 9

    为什么不能将哈希值相乘?

  10. 10

    为什么我可以进场却不能进场?

  11. 11

    为什么不能将类的实例用作值?

  12. 12

    为什么不能将String用作类型类?

  13. 13

    为什么不能将实例属性用作默认参数?

  14. 14

    为什么不能将UITableViewCell实例用作计算属性?

  15. 15

    为什么不能将“宽”用作变量名?

  16. 16

    为什么在MYSQL中不能将UNSIGNED用作FOREIGN KEY?

  17. 17

    为什么我不能将继承的错误用作SFINAE?

  18. 18

    为什么不能将实例属性用作默认参数?

  19. 19

    为什么我不能将插值变量用作varname?

  20. 20

    为什么我不能将 require 函数的参数用作变量

  21. 21

    为什么“ Hello World”插件在Chrome中不能运行,而在Firefox中却不能运行?

  22. 22

    为什么我可以在不声明C的情况下在C中调用函数,而在C ++中却不能呢?

  23. 23

    为什么有时可以使用NodeJS缓冲区连接音频数据,而有时却不能呢?

  24. 24

    为什么在FireFox中可以使用脚本控制台编辑DOM,而在IE 11中却不能呢?

  25. 25

    为什么我将list用作函数的参数,而函数却不能更改实际参数的值,而只能更改形式参数?

  26. 26

    SCP工作正常,但rsync却不能

  27. 27

    为什么我不能将数组作为json回显?

  28. 28

    为什么不能将UIBarButtonItem拖动到导航栏上?

  29. 29

    为什么不能将某些特征变成对象

热门标签

归档