如果你真正想找的是一个很好的借口来教自己如何与其他应用程序交互,这可能不是最好的一个。网络浏览器很混乱,时间安排不可预测,等等。所以,你承担了一项非常艰巨的任务,如果你用通常的方式去做,那将非常容易(直接与服务器对话,直接创建文本文件,等等,所有这些都不必接触任何其他程序)。

但如果你真的想与其他应用程序交互,有多种不同的方法,哪种方法更合适取决于你需要处理的应用程序类型。一些应用程序被设计成可以从外部实现自动化。在Windows上,这几乎总是意味着它们是一个COM接口,通常有一个IDispatch接口,您可以使用pywin32的COM包装器;在Mac上,它意味着一个AppleEvent接口,您可以使用ScriptingBridge或appscript;在其他平台上,没有通用标准。IE(但可能不是Chrome)和Word都有这样的接口。

有些应用程序有一个非GUI界面,无论是可以用popen驱动的命令行,还是可以通过ctypes加载的DLL/SO/DYLIB。或者,理想情况下,其他人已经为您编写了Python绑定。

有些应用程序只有GUI,没有办法实现GUI自动化。您可以在较低的级别上完成这项工作,方法是在Windows上通过pywin32发送WM嫒消息,在Mac上使用可访问性api等,或者在较高的级别上使用pywinauto之类的库,或者可能在selenium的很高级别,或者使用为自动化特定应用而构建的类似工具。

所以,你可以用任何东西来实现这一点,从selenium for Chrome和COM automation for Word,到自己制作所有的WM_u消息。如果这是一个学习练习,问题是你今天想学哪些东西。

让我们从COM自动化开始。使用^{},您可以直接访问应用程序自己的脚本界面,而无需从用户手中控制GUI,了解如何导航菜单和对话框等。这是编写“Word宏”的现代版本——宏可以是外部脚本,而不是内部脚本,而且不必用VB编写,但它们看起来很相似。脚本的最后一部分如下所示:word = win32com.client.dispatch('Word.Application')

word.Visible = True

doc = word.Documents.Add()

doc.Selection.TypeText(my_string)

doc.SaveAs(r'C:\TestFiles\TestDoc.doc')

如果你看Microsoft Word Scripts,你可以看到一堆例子。但是,您可能会注意到它们是用VBScript编写的。如果你四处寻找教程,它们都是为VBScript(或旧的VB)编写的。大多数应用程序的文档都是为VBScript(或VB、.NET,甚至低级COM)编写的。我所知道的所有使用Python中的COM自动化的教程,比如Quick Start to Client Side COM and Python,都是为那些已经知道COM自动化的人编写的,他们只想知道如何从Python中实现它。事实上,微软一直在改变所有东西的名称,这使得搜索变得更加困难,你怎么能猜到google for OLE automation、ActiveX scripting、Windows scripting House等与学习COM自动化有什么关系呢?所以,我不知道该推荐什么来开始。我可以保证,这一切都很简单,因为它看起来从上面的例子,一旦你学会了所有的胡说八道,但我不知道如何度过最初的障碍。

无论如何,并不是所有的应用程序都是自动化的。有时,即使是这样,描述GUI操作(用户在屏幕上单击的内容)也比用应用程序的对象模型来思考要简单得多。”选择第三段“很难用GUI术语描述,但是”选择整个文档“很容易,只需点击control-A,或者转到Edit菜单并选择All。GUI自动化比COM自动化要困难得多,因为你要么必须向应用程序发送与Windows本身发送的消息相同的消息来表示你的用户操作(例如,请参阅“Menu Notifications”),要么,更糟的是,从e左上角,单击,鼠标向下16像素,再次单击“以说”打开“文件”菜单,然后单击“新建”。

幸运的是,有一些像^{}这样的工具可以将这两种GUI自动化的东西打包起来,使之简单得多。还有像^{}这样的工具可以帮助您找出要发送的命令。如果你不喜欢Python,那么还有一些工具,比如^{}和^{},它们甚至比使用swapy和pywinauto更容易,至少在你开始使用时是这样。这样,脚本的最后一部分可能看起来像:word.Activate()

word.MenuSelect('File->New')

word.KeyStrokes(my_string)

word.MenuSelect('File->Save As')

word.Dialogs[-1].FindTextField('Filename').Select()

word.KeyStrokes(r'C:\TestFiles\TestDoc.doc')

word.Dialogs[-1].FindButton('OK').Click()

最后,即使有了所有这些工具,web浏览器也很难实现自动化,因为每个web页面都有自己的菜单、按钮等,它们不是Windows控件,而是HTML。除非你想一直到“移动鼠标12像素”的水平,否则很难处理这些问题。这就是它中的selenium来编写web gui脚本的地方,就像pywinauto编写Windows gui脚本一样。

python 外部程序 交互_使用Python与其他程序交互相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

  4. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  5. python环境搭建_搭建Python编程环境

    说明:本文面向信息技术新教材环境下的中学生或者编程小白.Python作为新教材落实计算思维的主要载体,有其独特的魅力.千里之行始于足下,搭建Python运行环境是跨出进入新世界大门的第一步. 搭建Py ...

  6. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  7. python3解释器执行not 1 and 1_编程语言的分类,python解释器多版本共存.执行python的两种方式,变量,用户与程序交互...

    一.编程语言的分类? 机器语言:直接使用二进制指令编程,直接操作硬件,必须考虑硬件细节. 汇编语言:用简写的英文标识符取代二进制去编写程序,直接操作硬件,必须考虑硬件细节. 高级语言:通过人类能够理解 ...

  8. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  9. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

最新文章

  1. 分布式协议基础http协议
  2. Win7命令终端基础配色指南
  3. 联通培训 老师教的 bootstrap row 里面都是12行不断的分割成小格子
  4. aws terraform_在AWS第1部分中使用Terraform自动缩放组:基本步骤
  5. 使用Mockito在Java中进行模拟入门
  6. c char转int_c/c++基础之sizeof用法
  7. Python 中文Key 报错问题
  8. Zen Garden驾到:首批Metal游戏已登录iTunes应用商店
  9. Linux故障解决(3)——YUM安装任何软件 报错:ERROR: XZ COMPRESSION NOT AVAILABLE
  10. 微信小程序遇到的那些坑
  11. Kicad如何导入封装库、符号库(元件库)以及3D模型文件?
  12. Emgu-WPF学习使用-Rectangle识别
  13. 湖北省首条短途运输航线“荆门—武汉”航线运营
  14. 零基础理财入门书籍分享
  15. 机器学习笔记最大熵之NER
  16. html获取表格行数据,怎么获取表格一行数据
  17. PCB设计中如何进行统一批量检测并生成错误报告
  18. python 英文词语相似度 方法汇总
  19. WordPress插件|ThnBoV1.3.0-缩略图美化插件
  20. 【数据分析】python带你分析122万人的生活工作和死亡数据

热门文章

  1. python安装后在哪里找_python安装后的目录在哪里
  2. MyBatis的association示例
  3. java并发之线程封闭(二)
  4. Python程序开发——第五章 函数
  5. 安装mamached数据库
  6. 将项目依赖也打到jar包中
  7. hyperion高光谱参数_收藏!光纤光谱仪在激光领域的典型应用
  8. MINIGUI常见错误集及解决方法
  9. linux环境没有bzip2,Linux系统中安装使用Bzip2来压缩文件的方法讲解
  10. python字符串常用的方法_python字符串常用方法