在Autohotkey和Python之间通信

11 投票
3 回答
7035 浏览
提问于 2025-04-16 18:22

有没有办法把一些参数从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 个回答

0

Python COM 服务器可以让你直接用 AHK 调用 Python 函数(带参数和返回值)。
你可以这样使用它:MsgBox % pythonComServer.method(args)

你不需要提前运行一个 Python 脚本。
使用 ComObjCreate() 就可以创建一个 Python 的实例。

我不知道 pywin32 在后台是怎么进行进程间通信的,但使用起来很简单。

这里有两个例子:在 autohotkey 中调用带参数的 Python 函数并获取返回值

4

进程间通信可以在Python脚本已经运行的情况下发送信息。

论坛讨论链接:http://www.autohotkey.com/forum/topic21699.html(那篇帖子里有很不错的文档链接)

你也可以使用TCP/IP网络通信(就像下面的帖子提到的那样),不过这可能没有使用进程间通信那么方便。

论坛讨论链接:http://www.autohotkey.com/forum/topic13829.html

2

你现在用的方法是最简单的,可能也是最好的方式来实现你想要的功能。

不同的应用程序之间可以通过很多种方式进行沟通,可能比你想象的还要多。不过,只要不需要实时交流,你可以通过传递参数来调用你的程序,这样做既简单又可靠。

撰写回答