- 我有 2 个 AHK 脚本,第一个脚本名为 (HotstringsEnglish.ah),它包含一些英语热字符串。
- 第二个(HotStringsFrench.ahk),它包含一些法语的热字符串。
我希望当我单击 ^e 时,(HotstringsEnglish.ahk) 被包含在当前正在运行的脚本中,但是当单击 ^f 时,我希望 (HotStringsFrench.ahk) 被包含在当前正在运行的脚本中,并从当前正在运行的脚本中排除第一个 (HotstringsEnglish.ahk)。
我尝试过这个,但没有效果:
#If WinActive("Browse ahk_exe anki.exe")
^e::#include HotStringsEnglish.ahk
^f::#include HotStringsFrench.ahk
#If
- 问题是当单击 ^e 时,(HotstringsEnglish.ahk)成功包含在当前运行的脚本中并且仍然包含,但是当单击 ^f 时(HotStringsFrench.ahk)不包含。
- 这是我在此处发布的问题的替代解决方案:https://www.autohotkey.com/boards/viewtopic.php?f=76&t=123108
请提供任何帮助!
答案1
#Include 是一个指令。指令不能有条件地、按热键或按命令执行。唯一的解决方案是使用另一个包含的脚本,您可以按以下方式更改其内容:
#Include %A_ScriptDir%\Hotstrings_Lang.ahk
#IfWinActive Browse ahk_exe anki.exe
^e::
FileAppend,
(
#Include HotStringsEnglish.ahk
), %A_ScriptDir%\Hotstrings_Lang_tmp.ahk
Sleep, 300
FileMove, %A_ScriptDir%\Hotstrings_Lang_tmp.ahk, %A_ScriptDir%\Hotstrings_Lang.ahk, 1 ; overwrite
Sleep, 300
Reload
return
^f::
FileAppend,
(
#Include HotStringsFrench.ahk
), %A_ScriptDir%\Hotstrings_Lang_tmp.ahk
Sleep, 300
FileMove, %A_ScriptDir%\Hotstrings_Lang_tmp.ahk, %A_ScriptDir%\Hotstrings_Lang.ahk, 1 ; overwrite
Sleep, 300
Reload
return
#IfWinActive
Hotstrings_Lang.ahk
请注意,如果脚本尚不存在,您必须手动创建该脚本。