有没有办法在 AutoHotKey 中有条件地定义热键?我想为具有不同物理键盘的不同机器进行不同的键盘映射。
这就是我想要做的:
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 )
{
#Include %A_ScriptDir%\Mappings-BDWELLE-DIM8300.ahk
}
或者
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
If ( ComputerName = BDWELLE-DIM8300 )
{
LWin::LAlt
[more hotkey definitions that only apply to this machine]
}
但由于 AHK 在解释 If 语句之前解析热键定义和 #Include 语句,因此热键定义(无论是否埋在 #Include 中)不遵守 If 条件。
感谢您向我推荐 AutoHotKey_L!
您有关于如何有条件地定义热键的具体示例吗?语法非常混乱。这是我正在尝试的(在安装 AutoHotKey_L.exe 代替 AutoHotKey.exe 之后):
RegRead, ComputerName, HKEY_LOCAL_MACHINE, System\CurrentControlSet\Control\ComputerName, ComputerName
#If ( ComputerName = BDWELLE-DIM8300 )
LWin::LAlt
但这似乎不起作用......
答案1
我知道这是一个老问题,但是我今天早上必须这样做,这就是我在 AutoHotkey_L 中让它工作的方法:
#If %computername% = work-computer
^h::MsgBox Work
#If
#If %computername% != work-computer
^h::MsgBox Not at Work
#If
关键是你的计算机名称没有被引用。这让我困惑了好一阵子。
希望它能帮助到别人!
答案2
看着那(这热键命令- 它可以在脚本的任何位置动态创建或修改 HK。
答案3
Lifehacker 提出了一个名为自动包含帮助您选择在不同的计算机上使用哪些脚本。它通过将脚本以文本形式串联到一个文件中,然后运行该文件来实现这一点。
免责声明:我没有使用过它。
答案4
你可能想给自动热键一次尝试。除其他外,它有一个 #If 语句,其工作方式与 #IfWinActive 相同,但适用于任意代码。