提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、 简介
  • 二、示例代码
    • 1.引入库
    • 三、 效果图
  • 四、代码解释
    • 五、 常见问题

前言

在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui、win32con、win32api,要使用这三个模块需要先安装pywin32。本文就为大家介绍了如何利用这些模块实现自动操作电脑,感兴趣的可以了解一下

一、 简介

在windows系统上,重复性的操作可以用Python脚本来完成,其中常用的模块是win32gui、win32con、win32api,要使用这三个模块需要先安装pywin32。在cmd中输入如下命令,即可安装pywin32:

pip install pywin32

这三个模块作用如下:

win32gui:模块定义了Windows下关于图形操作的API,如查找窗口句柄的函数FindWindow和FindWindowEx;

win32con:模块内定义了Windows API内的宏;

win32api:win32api为Microsoft 32位平台的应用程序编程接口,可以模拟按键操作。

二、示例代码

1.引入库

以自动在记事本中输入文本为例,说明如何利用这三个模块进行自动化办公

import win32gui
import win32con
import win32api
import timeret = win32api.ShellExecute(1, 'open', 'D:\\test.txt', '', '', 1)
print('正在打开软件...')
time.sleep(2)
handle = win32gui.FindWindow(None,'test.txt - 记事本')
handleEdit = win32gui.FindWindowEx(handle, None, 'EDIT', None)menu = win32gui.GetMenu(handle)
subMenu = win32gui.GetSubMenu(menu, 0)mystring=['北国风光,千里冰封,万里雪飘。',
'望长城内外,惟余莽莽;大河上下,顿失滔滔。',
'山舞银蛇,原驰蜡象,欲与天公试比高。',
'须晴日,看红装素裹,分外妖娆。',
'江山如此多娇,引无数英雄竞折腰。',
'惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。',
'一代天骄,成吉思汗,只识弯弓射大雕。',
'俱往矣,数风流人物,还看今朝。','《沁园春·雪》']
for index, i in enumerate(mystring):for ch in i:print(ch)win32gui.SendMessage(handleEdit, win32con.WM_CHAR, ord(ch), 0)time.sleep(0.05)# 模拟按下回车键的操作win32api.keybd_event(13, 0, 0, 0)time.sleep(0.05)win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)#获取保存按钮
cmdId=win32gui.GetMenuItemID(subMenu, 3)
#点击保存
win32gui.PostMessage(handle, win32con.WM_COMMAND, cmdId, 0)
#关闭窗口
win32gui.PostMessage(handle, win32con.WM_CLOSE, 0, 0)

三、 效果图

四、代码解释

1.win32api.ShellExecute(1, ‘open’, ‘D:\test.txt’, ‘’, ‘’, 1)表示打开D盘目录下的test.txt文件。

2.time.sleep(2)有的文件打开比较慢,所以这里等待2秒

3.win32gui.FindWindow(None,‘test.txt - 记事本’)查找窗口句柄,这里是根据窗口的标题来查找窗口的句柄,第二个参数值要与标题完全一致,如下图


4.win32gui.FindWindowEx(handle, None, ‘EDIT’, None)用第3步找到的句柄查找输入的窗口,这里窗口对应的参数是’EDIT’,换一个软件可能就不是’EDIT’

5.subMenu = win32gui.GetSubMenu(menu, 0)查找窗口对应的菜单,后面保存文件会用到

6.win32gui.SendMessage(handleEdit, win32con.WM_CHAR, ord(ch), 0)向输入的窗口写入字符ord(ch)

7.win32api.keybd_event(13, 0, 0, 0)写完一行后,模拟键盘输入Enter键,Enter键对应的键值是13,这行代码表示按键按下

8.win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)这行代码表示Enter键键松开

9.cmdId=win32gui.GetMenuItemID(subMenu, 3)根据第5步的子菜单获取保存按钮的索引值,如下图所示,从0开始计数,保存正好是第3个

10.win32gui.PostMessage(handle, win32con.WM_COMMAND, cmdId, 0)发生保存消息

11.win32gui.PostMessage(handle, win32con.WM_CLOSE, 0, 0)发生关闭窗口消息

按照这样的编程流程,就实现了自动打开test.txt文件,并自动输入预置的文本内容,输入完成后自动保存并关闭窗口,从而实现了自动化办公。

五、 常见问题

win32api.ShellExecute(1, ‘open’, ‘D:\test.txt’, ‘’, ‘’, 1)这行代码用默认的程序打开文件,如果你设置默认打开程序不是记事本,那本代码无法自动输入文本到test.txt中

在自动输入文本时,需要保证记事本窗口获得输入焦点,否则程序无法按照预期执行。

Python利用pywin32实现自动操作电脑相关推荐

  1. python利用pywin32模块自动化操作微信发消息

    本文是利用python 操作电脑微信发消息,用到win32gui和win32api模块,以便以后忘记,做此纪录! import win32gui import win32api import win3 ...

  2. 【python自动化】02. pywin32库自动操作键鼠(保姆级代码注释)

    目录 源码和工具下载 大漠综合工具->坐标和窗口信息抓取 在你的桌面上新建一个记事本用于后面的代码测试 完整项目源码 实现思路 介绍win32的基础思路 基本步骤 API介绍 代码实战 1. 获 ...

  3. Python 使用win32相关的库实现简单自动操作电脑QQ--(1,登录QQ、批量登录)

    今天来教大家来认识QQ的第一个界面--登录界面.并实现可以自动登录 废话不多说 上代码: 注:代码中含有大量注释 所以本文就不做太多解释 #date--2020.06.19 import win32g ...

  4. python调用win32 自动登陆_Python 使用win32相关的库实现简单自动操作电脑QQ--(1,登录QQ、批量登录)...

    今天来教大家来认识QQ的第一个界面--登录界面.并实现可以自动登录 废话不多说 上代码: 注:代码中含有大量注释 所以本文就不做太多解释 #date--2020.06.19 import win32g ...

  5. Python 使用win32相关的库实现简单自动操作电脑QQ--(2,打开好友对话框以及其他操作)

    这次为大家带来的是对登陆后的QQ进行的操作: 1,打开好友对话框 代码 import win32gui, win32con, win32api, time import win32clipboard ...

  6. 安卓手机运行python脚本自动操作app_使用python控制Android手机自动操作WiFi开关

    最新公司上线的app,开发童鞋从后台看到android版本会有一定的概率在操作app时,网络断开再连接的时候会出现闪退问题.开发针对问题修改了下代码,需要我们再验证下,但通过手机的通知栏关闭和打开Wi ...

  7. Python 利用智能音箱语音控制电脑开关机

    完成下面这个有趣的实验,你所需要的东西有: 1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部 ...

  8. python利用selenium实现自动登陆网页下载内容

    最近在做一个实验,需要用到大量的源文件,需要在网站上下载,由于是一个毫无技术且重复性的工作,因此,就想利用python自动完成这件事,话不多说,直接上完整代码啦! ''' url = https:// ...

  9. 自动操作电脑的软件_技术干货 | 自动透镜植入定位仪

    深脑钙成像技术在神经科学领域内的应用愈加广泛,它通过微型荧光显微镜 系统,观察行动自由的动物大脑深处的神经元活动, 可以更好地揭示内在的神经活动,对于理解动物行为与认知功能背后的神经编码机制变得越来越 ...

最新文章

  1. 15.使用一样的BFS方法(代码几乎一模一样)解决多道LeetCode题目--542题(01矩阵)1765题(地图中的最高点)994腐烂的橘子
  2. c++ 判断nil_golang A=nil,B=A,but B!=nil 这是真的
  3. 使用Linux的lsblk命令列出块设备信息
  4. TypeError: tuple object does not support item assignment解决方案
  5. 华为p40鸿蒙系统价格有好高,鸿蒙系统版本华为P50新机的曝光,华为P40处境悲惨价格骤降...
  6. python语言的解释性特点指的是编写的程序不需要编译_解释性与编译型 Python2和python3的区别...
  7. CSS中的Position属性
  8. hbase 单机连接hadoop_Hadoop、Hbase单机环境安装
  9. [css] 请描述下你对translate()方法的理解
  10. Softmax回归与冗余性
  11. row_number() over()排序功能说明
  12. SharePoint 备忘录(一)
  13. opencv4.3.0+Visual Studio 2019环境配置
  14. 怎样设置电脑壁纸_怎样把C盘设置成禁止安装任何软件?教你两个方法,告别电脑卡顿...
  15. 移动应用的全新方式:超级app+轻应用
  16. AARRR模型分析方法
  17. PHP取出数组中随机一条字符串
  18. KL Divergence KL散度
  19. WPF(三) WPF 命令
  20. oxygen 生成java对象_Eclipse 4.7 Oxygen 正式发布!带来大量更新

热门文章

  1. 深圳Java培训:Java中的对象流和序列化
  2. 出现This dependency was not found:解决方法,亲测有用
  3. mybatis使用foreach
  4. android jks sha1,获取Android SHA1 、生成jks密钥、签名Apk
  5. mysql 8.0 导入文件_mysql 8.0数据库迁移(直接复制文件)
  6. 【设计模式】我终于读懂了观察者模式。。。
  7. Android(Kotlin)图片按钮,单选框,复选框(实验课)
  8. SV笔记:static 和 automatic 概念及相关规定
  9. 滴滴服务分计算机制,滴滴服务分改版!新功能上线!司机:太好了
  10. 我了解的计算机病毒,什么是计算机病毒,计算机病毒了解介绍