如何使用热键从当前运行的脚本中#include 和排除特定脚本?

如何使用热键从当前运行的脚本中#include 和排除特定脚本?
  • 我有 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

请提供任何帮助!

答案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请注意,如果脚本尚不存在,您必须手动创建该脚本。

相关内容