是否可以使用Python与基于GUI的桌面应用程序进行交互,以及如何进行交互?

时间:2019-07-12 06:21:46

标签: python user-interface ms-office reverse-engineering

我计划为我的* nix系统编写一项服务,该服务可以与本地计算机上的一定数量的GUI应用程序(如Photoshop,Libre Office等)进行交互。

本地服务的目的实质上是侦听远程消息并相应地执行特定的操作-例如,在Photoshop中更改图层的背景,或在Libre Office(或MS Office)中为页面添加页边距。您可以假定该应用程序在操作系统的显示环境中处于活动状态。

现在我的问题是:

  1. 这有可能吗?我个人认为不可能完成此任务,除非我深入了解这些应用程序的源代码并从根本上扩展这些应用程序本身。但是,由于它们大多是专有应用程序,因此也存在法律含义。
  2. 假设可以通过更改这些应用程序的来源以某种方式实现,那么团队是否不必弄清楚所有这些特定应用程序的体系结构和内部工作原理,还是我应该研究的通用框架概念?

1 个答案:

答案 0 :(得分:1)

仅应从主线程更新UI。或者只是考虑发送Windows消息。

  

本地服务的目的实质上是侦听远程消息并相应地执行特定操作

Microsoft当前不建议并且不支持从任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)自动化Microsoft Office应用程序,因为Office可能表现出不稳定在这种环境中运行Office时的行为和/或死锁。

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果您从服务器端解决方案中使用Office应用程序,则该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office文章中了解有关此内容的更多信息。