Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python和mac应用程序之间进行通信?_Python_Macos_Communicate_Osx - Fatal编程技术网

如何在python和mac应用程序之间进行通信?

如何在python和mac应用程序之间进行通信?,python,macos,communicate,osx,Python,Macos,Communicate,Osx,这可能是一个模糊的问题,但我没有正确地重新表述。所以这里有一个解释 我开发了一个最初作为Mac应用程序开发的应用程序,使用来自Carbon/Cocoa的API来完成我的任务。(该应用程序的目标是在鼠标移动/其他击键后向应用程序发送“击键”。我使用可访问性API来实现这一点) 但是现在,我想添加脚本支持,这样就可以有条件地击键了。例如:按下“Y”5次后,我想按下按钮“B” 在OSX中,Python应用程序不可能做这样的事情,我也找不到任何允许我这样做的库。所以我想我应该让这个应用程序有两个功能。首

这可能是一个模糊的问题,但我没有正确地重新表述。所以这里有一个解释

我开发了一个最初作为Mac应用程序开发的应用程序,使用来自Carbon/Cocoa的API来完成我的任务。(该应用程序的目标是在鼠标移动/其他击键后向应用程序发送“击键”。我使用可访问性API来实现这一点)

但是现在,我想添加脚本支持,这样就可以有条件地击键了。例如:按下“Y”5次后,我想按下按钮“B”

在OSX中,Python应用程序不可能做这样的事情,我也找不到任何允许我这样做的库。所以我想我应该让这个应用程序有两个功能。首先:我将用Cocoa/Carbon编写一个应用程序,其中包含基本函数:SendKeyToApp(pid,key)和WaitForMovement()

python应用程序将使用这些方法调用与该应用程序通信。这里的问题是:我如何在这两个应用程序之间进行通信?我将使用HTTP服务器、套接字服务器、某种subprocess.Popen()hacks。坦白说,我不知道


有人有什么想法来完成这样的任务吗?

有很多方法可以在两个应用程序之间同步/通信数据,但让我解释一下最简单的方法:

RESTful序列化:
将对象序列化为XML/JSON或两个应用程序框架都可以解析的任何其他自定义格式。例如
如果两个应用程序都在同一台服务器/机器上,我希望您所要做的就是将数据编码/存储到同一个文件中,并从其他应用程序中的相应文件读取/解析数据

否则,您可能需要创建用于访问数据文件的web服务


如果您有进一步的疑问,请在评论中告诉我

在我看来,在两个应用程序之间建立通信的最简单方法是客户机-服务器协议XMLRPC。两者都支持

Python部分相当简单:

import xmlrpc.client
rpcProxy = xmlrpc.client.ServerProxy(URL_OF_SERVER)
rpcProxy.SendKeyToApp(pid,key)
至于可可粉部分,我不知道,但似乎是有可能的:或者

可能就是你想要的:

PyObjC(发音为pie-obz-see)是使用Python编写Cocoa应用程序成为可能的关键部分。它使Python对象能够像传递Python对象一样传递Objective-C对象的消息,同样也使Objective-C对象能够像传递Python对象一样传递消息


您可以使用PyObjC在python应用程序和cocoa应用程序之间搭建桥梁。

更简单。我在Python中使用了可访问性API,这一切使我能够轻松地做到这一点,而无需任何可可粉/碳

对于感兴趣的人来说,它被称为

,许多本机应用程序都支持AppleScript(又称OSA)作为其本机脚本API。因此,您的问题就变成了Python和Applescript之间的交互问题(首先要弄清楚如何在Applescript中与您的目标应用程序通信)


您可能需要查看一个或多个第三方模块。

我需要它是“即时”的。似乎文件I/O速度太慢了?我需要在100毫秒内解决问题,以使其足够高效。请使用HTTP GET/POST请求,该请求将通过本地计算机或远程计算机上的网络连接进行。在本地计算机上,您可能会说1毫秒或更少,在专用本地网络上的远程可能不会超过30毫秒Cocoa在服务XMLRPC方面似乎做得不好,但客户端支持似乎很广泛。我该怎么做?我需要Python向Cocoa服务器发送一些东西,而不是反过来。(Python发明了“命令”,Cocoa执行它们)。