在Autohotkey和Python之间通信
有没有办法把一些参数从AutoHotkey传给Python呢?
我用AutoHotkey从记事本里读取了一个数字,并把它存储在一个变量里,现在我想把这个数字发送到Python代码里去做一些计算。
我的AutoHotkey代码是:
controlGetText, telphoneNumber, Edit1, Untitled - Notepad
我想把这个telphoneNumber
发送到Python文件里。
请问我可以怎么做呢?
我需要把Python程序做成一个exe文件,然后从AutoHotkey调用它吗?比如说:
RunWait, C:\Button\button.exe telphoneNumber
还是说我需要从AutoHotkey运行命令提示符的命令来执行Python程序?像这样:
Run Cmd Python C:\Button\button.py telphoneNumber
我不知道哪种方法最好,因为我还是AutoHotkey的新手。
任何建议都非常感谢。
编辑:
不过我已经通过使用AutoHotkey的运行命令成功地发送了参数,这样可以从命令提示符执行Python文件。
Run Cmd \k "Python C:\Button\button.py %telphoneNumber%"
但我还是想知道这是不是正确的解决方案,或者还有其他的方法吗?
3 个回答
Python COM 服务器可以让你直接用 AHK 调用 Python 函数(带参数和返回值)。
你可以这样使用它:MsgBox % pythonComServer.method(args)
你不需要提前运行一个 Python 脚本。
使用 ComObjCreate() 就可以创建一个 Python 的实例。
我不知道 pywin32 在后台是怎么进行进程间通信的,但使用起来很简单。
进程间通信可以在Python脚本已经运行的情况下发送信息。
论坛讨论链接:http://www.autohotkey.com/forum/topic21699.html(那篇帖子里有很不错的文档链接)
你也可以使用TCP/IP网络通信(就像下面的帖子提到的那样),不过这可能没有使用进程间通信那么方便。
你现在用的方法是最简单的,可能也是最好的方式来实现你想要的功能。
不同的应用程序之间可以通过很多种方式进行沟通,可能比你想象的还要多。不过,只要不需要实时交流,你可以通过传递参数来调用你的程序,这样做既简单又可靠。