AutoHotkey 编译的脚本不工作
AutoHotkey compiled script not working
我已经编写了一个 AutoHotkey 脚本,在未编译的情况下运行良好,但无论我使用哪个基础文件 (.bin) 来编译 Ahk2Exe 中的 exe,它都会因某些未知原因而失败。这是 AHK 脚本:
SetTitleMatchMode, 2
WinGet, PID, PID, Anime Studio ahk_class LM_Wnd
Process, Close, %PID%
if 1 && (%ErrorLevel% != 0)
{
Run, %1%
}
我是这样 运行 的,来自 Lua 脚本(双引号表示实际路径中的空格):
--to uncompiled AHK (working code)
os.execute("C:/Users/JWesley/Desktop/AutoHotkey/AutoHotkeyU64.exe ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS.ahk".."\"".." "..path)
--to compiled AHK (not working)
os.execute("\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path)
我正在将变量 "path" 从 Lua 传递给 AHK 脚本 (%1%)。我尝试将 AHK 编译的 exe 设置为 运行 作为管理员,但这没有帮助。
path = "C:/Users/JWesley/Desktop/test.anime"
我尝试使用 os.execute('pause') 以便我有机会阅读任何命令提示消息,但第一个仍然在暂停的打开之前关闭。
编辑:好的,我得到这个是为了让提示保持打开状态:
os.execute("cmd.exe /k"..'"C:\Users\JWesley\Desktop\AutoHotkey\AutoHotkeyU64.exe" "C:\Users\JWesley\Files\AS\Anime Studio Pro\scripts\utility\ReopenAS.ahk" "' .. path .. '"')
并在提示中收到此消息:
The filename, directory name, or volume label syntax is incorrect.
我在这里找到了一个解决方案:os.execute with filename and argument containing spaces 事实证明它比 AutoHotkey 更 Lua 问题,尽管我仍然不确定为什么编译和未编译的 AHK 脚本之间存在差异。在Lua中,我检查了路径是否有空格,如果有:
path = "\""..path.."\""
然后我做了:
com = "\"".."type NUL && ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path.."\""
os.execute(com)
据说这可以防止命令行删除外部引号,这是路径中空格所必需的。
现在我唯一的问题是编译脚本 运行 由于我的防病毒软件而变慢,但这是一个单独的问题。
感谢反馈。
我已经编写了一个 AutoHotkey 脚本,在未编译的情况下运行良好,但无论我使用哪个基础文件 (.bin) 来编译 Ahk2Exe 中的 exe,它都会因某些未知原因而失败。这是 AHK 脚本:
SetTitleMatchMode, 2
WinGet, PID, PID, Anime Studio ahk_class LM_Wnd
Process, Close, %PID%
if 1 && (%ErrorLevel% != 0)
{
Run, %1%
}
我是这样 运行 的,来自 Lua 脚本(双引号表示实际路径中的空格):
--to uncompiled AHK (working code)
os.execute("C:/Users/JWesley/Desktop/AutoHotkey/AutoHotkeyU64.exe ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS.ahk".."\"".." "..path)
--to compiled AHK (not working)
os.execute("\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path)
我正在将变量 "path" 从 Lua 传递给 AHK 脚本 (%1%)。我尝试将 AHK 编译的 exe 设置为 运行 作为管理员,但这没有帮助。
path = "C:/Users/JWesley/Desktop/test.anime"
我尝试使用 os.execute('pause') 以便我有机会阅读任何命令提示消息,但第一个仍然在暂停的打开之前关闭。 编辑:好的,我得到这个是为了让提示保持打开状态:
os.execute("cmd.exe /k"..'"C:\Users\JWesley\Desktop\AutoHotkey\AutoHotkeyU64.exe" "C:\Users\JWesley\Files\AS\Anime Studio Pro\scripts\utility\ReopenAS.ahk" "' .. path .. '"')
并在提示中收到此消息:
The filename, directory name, or volume label syntax is incorrect.
我在这里找到了一个解决方案:os.execute with filename and argument containing spaces 事实证明它比 AutoHotkey 更 Lua 问题,尽管我仍然不确定为什么编译和未编译的 AHK 脚本之间存在差异。在Lua中,我检查了路径是否有空格,如果有:
path = "\""..path.."\""
然后我做了:
com = "\"".."type NUL && ".."\"".."C:/Users/JWesley/Files/AS/Anime Studio Pro/scripts/utility/ReopenAS64.exe".."\"".." "..path.."\""
os.execute(com)
据说这可以防止命令行删除外部引号,这是路径中空格所必需的。
现在我唯一的问题是编译脚本 运行 由于我的防病毒软件而变慢,但这是一个单独的问题。
感谢反馈。