我有一个名为subroutines.ahk的txt文件,下面是hotstring。
::btw::Thank you for the help
我知道如果我想从另一个脚本运行我的hotstring我只需要使用以下命令将其包含在该脚本中:
#include subroutines.ahk
但我不想这样做而是从另一个脚本中我想循环读取子程序.ahk的内容并以这种方式加载hotstring变量。
Loop, read,subroutines.ahk
{
Loop, parse, A_LoopReadLine, %A_Tab%
{
MsgBox, Field number %A_Index% is %A_LoopField%.
}
}
我非常感谢您对如何将我的hotstring变量加载到另一个脚本中的帮助。
我打算在subroutines.ahk中对hotsrings进行编码,然后在第二个程序中解码subroutines.ahk的内容并将其加载到内存中。 在上面的例子中虽然我首先想弄清楚如何循环读取txt文件并从那里运行热字符串。
答案 0 :(得分:1)
#
指令仅处理一次。要解决此限制,您可以使用reload
执行包含#
指令的动态生成的脚本。
代码示例:
按下F1时,使用" subroutines.ahk"的内容。生成并运行使用#
指令的代码:
F1:: reload_hotstrings()
#Include temp.ahk
reload_hotstrings()
{
FileDelete temp.ahk
loop read, subroutines.ahk
{
MsgBox Hotstring number %A_Index% is %A_LoopReadLine%.
FileAppend %A_LoopReadLine%`n, temp.ahk
}
reload
}
或者,如果您想在autohotkey启动时自动生成热键代码:
我在source.dat
文件中使用subroutines.ahk
代码示例:
FileGetTime source_time, source.dat
FileGetTime compiled_time, compiled.ahk
; calculate time difference between source and compiled files
EnvSub source_time, %compiled_time%, Seconds
; compile and run if source newer
if source_time > 0
{
FileDelete compiled.ahk
loop read, source.dat
{
FileAppend %A_LoopReadLine%`n, compiled.ahk
}
reload
}
#Include compiled.ahk
答案 1 :(得分:1)
演示使用映射到动态值的热键
; Replace hash values with whatever method you use to decrypt your hotstrings
decrypted := {abc: "alpha", def: "beta"}
::abc::
Send % decrypted["abc"]
return
::def::
Send % decrypted["def"]
return
当您输入“abc”时,会出现“alpha”