如何解决在 AHK 中嵌入 Python我有来自 AHK 网站的代码,我不能将多个 Python 脚本放在一个 Autohotkey 脚本中吗?
在AHK中嵌入Python(我有AHK网站的代码),我不能将多个python脚本放在一个Autohotkey脚本中吗?
https://www.autohotkey.com/boards/viewtopic.php?t=7732
Python 代码是用括号嵌入的,它运行良好。喜欢,
py =
(
some code
some code
)
Runpython(py) : works fine
Runpython()
{
some code
some code
}
是的,上面的代码工作正常。但我遇到的问题是, 如果我有多个像下面这样的 python 代码,似乎无论如何都只返回第一个 python 脚本。
py1 =
(
some code
some code
)
py2 =
(
some code
some code
)
Runpython(py1) ; returns py1 which is fine
Runpython(py2) ; still returns py1,which is the trouble I got.
Runpython()
{
some code
some code
}
是的,就像上面一样。希望我可以同时运行 py2 和 py1。
解决方法
如果你点击上面的链接,下面有一个脚本是由名为 XeroByte 的用户完成的。 我把它以简短的形式放在这里,只包含关键部分。
我想运行多个 python 脚本。但是每次我尝试运行第二个脚本时,总是运行第一个脚本。 我决定取出每一行,直到它起作用为止。
pyStr= ;python code
(
Some code works
Some code works
)
pyStr2= ;python code that I added
(
Some code don't work
Some code don't work
)
RunPython(pyStr:="",PyVer:="")
finalPyStr := (pyStr="") ? Selection() : pyStr ; if a string has been passed into this function then use that as the python code,otherwise use the currently selected text using my custom Selection() function
if(StrLen(finalPyStr) > 0){ ; Only do the following if there is some python code to run
DllCall("LoadLibrary","Str",PythonDll)
DllCall(PythonDll "\Py_Initialize","Cdecl")
DllCall(PythonDll "\PyRun_SimpleString","AStr",finalPyStr)
DllCall(PythonDll "\Py_Finalize","Cdecl")
}
return 1
}
最后,我了解到 DllCall(PythonDll "\Py_Finalize","Cdecl")
是主要问题。我不知道它的确切用途,但它确实阻止了我的第二个脚本的运行。所以最终的形式如下。
pyStr= ;python code
(
Some code works
Some code works
)
pyStr2= ;python code that I added
(
Some code works
Some code works
)
RunPython(pyStr:="",finalPyStr)
}
return 1
}
我的第二个代码也和第一个一样。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。