【问题标题】:How to get the actual hotstring typed with capitalization in AutoHotKey?如何在 AutoHotKey 中获取大写的实际热字串?
【发布时间】:2021-02-02 21:49:56
【问题描述】:

我在 AutoHotKey 中使用热字符串,输出取决于字符是否大写。有没有办法确定触发热键的键中的字符是否大写?我尝试使用 A_ThisHotkey,但它似乎不区分大小写。如果您有解决方案,请告诉我。谢谢。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    我不知道执行此操作的内置方法,但也许您只需创建更多热字符串并使用C option 来区分大小写,如下所示:

    :C:hello::
    :C:Hello::
    :C:HeLLo::
    :C:HELLO::
        MsgBox, % A_ThisHotkey
    return
    

    来自 cmets 的示例请求:

    hotstrings := "hello,HELLO,HeLlo,HellO,hElLo,hellO"
    for each, hotstring in StrSplit(hotstrings, ",")
        Hotstring(":CB0*?:" hotstring, Func("MyFunction"))
    return
    
    MyFunction()
    {
        MsgBox, % "Hotstring triggered!`n" A_ThisHotkey
    }
    

    【讨论】:

    • 感谢您的帮助,但我有数千个热字符串,所以这样的事情是不可行的。我想我最终会使用类似于键盘记录器的东西。
    • 我明白了。那么您可以使用Hotstring() function 自动生成热字串,这样会更可行。
    • 你介意提供一个例子来说明你的意思吗?
    • 当然,我现在加了一个。这样就创建了字符串 hotstrings 中由 , 分隔的所有热字符串。
    • 谢谢。这个例子说明了一切。但是,这种方式意味着我的平均单词将有大约 100 种大小写字母组合,在这种情况下,hello 将有 32 种组合。我不确定 AHK 如何与计算机一起检测热字串,但也许你可以。您认为使用键盘记录器并在最后一个单词中查找大写字母更有效还是使用大约 60,000 个热字串,每个热字串平均有 100 个组合,总共有 600 万个热字串。
    【解决方案2】:

    您可以在定义热字串之前激活case sensitivity option

    #Hotstring c
    ::Hello::Hi ; will be triggered only if you exactly typed these letters case-sensitive
    

    【讨论】:

      猜你喜欢
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      相关资源
      最近更新 更多