使用Python模拟操作windows应用窗口详解

 更新时间:2025年02月27日 10:25:28   作者:游客520  
在日常工作中,我们经常遇到需要进行大量重复性任务的情况,这篇文章将介绍如何使用 Python 模拟操作记事本,感兴趣的小伙伴可以了解下

在日常工作中,我们经常遇到需要进行大量重复性任务的情况。比如,我们常常需要创建文件、输入内容、保存文件等。Python 提供了强大的自动化库,能够帮助我们自动化这些繁琐的任务。在这篇文章中,我将通过一个具体的例子,教你如何使用 Python 模拟操作记事本,自动输入文本并将其保存到桌面。

目标:自动化创建并保存记事本文件

我们将编写一个 Python 脚本,步骤如下:

  • 启动记事本应用:自动打开记事本并隐藏窗口。
  • 输入文本:自动将一段文本复制到剪切板,并粘贴到记事本中。
  • 保存文件:自动保存文本文件到桌面,并自动命名文件。
  • 通过模拟鼠标点击和键盘输入,我们能够在 Python 中实现这些自动化任务。

实现步骤

首先,你需要确保已经安装了以下 Python 库:

  • pyautogui:用于模拟键盘和鼠标操作。
  • win32con 和 win32gui:用于操作 Windows 窗口。
  • win32clipboard:用于操作剪切板。
  • os 和 time:用于系统操作和时间控制。

如果你还没有安装这些库,可以通过以下命令安装:

pip install pyautogui pywin32

接下来,我们可以开始编写代码了。

注意:代码中有些多余步骤,目的在于展示python操作窗口的能力。例如设置记事本窗口大小和位置、隐藏/显示窗口等。

1. 导入必要的库

import os
import time
import win32con
import win32gui
import pyautogui
import win32clipboard

os:提供与操作系统交互的功能,如运行系统命令、处理文件路径等。

time:用于设置代码执行的延时,确保模拟操作有足够的时间完成。

win32con 和 win32gui:Windows GUI 操作的接口,用来操作窗口、模拟按键等。

pyautogui:用来模拟键盘和鼠标操作,模拟点击、输入、按键等。

win32clipboard:用于操作剪切板,可以读取或写入剪切板内容。

2. 写入剪切板的函数

def write_to_clipboard(text):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()  # 清空剪切板
    win32clipboard.SetClipboardText(text)  # 设置剪切板内容
    win32clipboard.CloseClipboard()

这个函数的作用是将文本写入剪切板,具体步骤如下:

  • win32clipboard.OpenClipboard():打开剪切板以进行操作。
  • win32clipboard.EmptyClipboard():清空剪切板中的内容,防止出现旧内容干扰。
  • win32clipboard.SetClipboardText(text):将传入的文本设置为剪切板内容。
  • win32clipboard.CloseClipboard():操作完成后关闭剪切板。

这个函数的关键是 剪切板操作,它让你能够在没有直接输入的情况下,通过模拟粘贴(Ctrl + V)将文本插入到其他应用程序中。

3. 关闭记事本并重新启动

os.system('taskkill /im notepad.exe /f')
os.startfile('notepad')
time.sleep(1)  # 等待记事本完全启动

os.system('taskkill /im notepad.exe /f'):通过系统命令强制关闭记事本进程。taskkill 是 Windows 的命令行工具,/im notepad.exe 指定进程名称,/f 强制结束进程。如果记事本正在运行,它会被关闭。

os.startfile('notepad'):启动新的记事本应用。startfile() 是 Python 的 os 模块提供的一个函数,可以用来启动程序。

time.sleep(1):等待 1 秒钟,以确保记事本启动完成。这里的延时是为了给记事本窗口足够的时间完全加载,避免在窗口未完全加载时进行后续操作。

4. 获取窗口句柄

hwnd = win32gui.FindWindow(None, '无标题 - Notepad')
print(hwnd)  # 打印窗口句柄,调试用

win32gui.FindWindow(None, '无标题 - Notepad'):通过窗口标题查找窗口句柄(hwnd)。None 表示不根据类名查找,仅根据窗口标题查找。'无标题 - Notepad' 是记事本的默认标题。

hwnd 是窗口的唯一标识符,它是一个整数,可以用它来对窗口进行进一步操作。

5. 隐藏窗口

win32gui.ShowWindow(hwnd, win32con.SW_HIDE)
time.sleep(1)

win32gui.ShowWindow(hwnd, win32con.SW_HIDE):该命令会将记事本窗口隐藏。hwnd 是窗口的句柄,win32con.SW_HIDE 是隐藏窗口的常量。

time.sleep(1):等待 1 秒钟,确保窗口已成功隐藏。

6. 设置要粘贴的文本内容

text = """
免费征集 | 自动化需求
还在为重复性工作头疼?数据处理耗时过长?
我们正在免费征集 自动化需求,无论是文件整理、报表生成、邮件处理还是网页爬取,只要您有需求,我愿意免费为您编写脚本,让繁琐任务一键完成!
我们能帮您做什么?
文件处理:批量重命名、分类归档、数据清洗。
数据处理:Excel 自动化、报表生成、跨平台同步。
网页爬取:自动获取产品信息、市场数据或文章内容。
邮件管理:自动发送邮件、下载附件、分类归档。
日常任务:自动安排日程、提醒任务、同步到项目管理工具。
其他需求:只要您想到的,我们都愿意尝试!
"""

这是我们要插入记事本的文本内容,包含了需求征集的详细信息。文本可以随意修改,按照你的实际需求进行更改。

7. 将文本写入剪切板

write_to_clipboard(text)

调用我们刚才定义的 write_to_clipboard() 函数,将文本内容写入剪切板。之后,我们可以通过粘贴操作将这些内容插入到记事本中。

8. 显示窗口并调整位置

win32gui.ShowWindow(hwnd, win32con.SW_SHOW)  # 显示窗口
time.sleep(1)
win32gui.MoveWindow(hwnd, 100, 100, 800, 600, True)  # 调整窗口大小和位置

win32gui.ShowWindow(hwnd, win32con.SW_SHOW):将隐藏的窗口显示出来。

time.sleep(1):等待 1 秒钟,确保窗口显示后再执行后续操作。

win32gui.MoveWindow(hwnd, 100, 100, 800, 600, True):将窗口位置调整到 (100, 100),并将窗口大小设置为 800x600 像素。这里的 True 参数表示强制移动窗口。

9. 粘贴文本内容并保存文件

pyautogui.hotkey('ctrl', 'v')  # ctrl + v
time.sleep(2)

pyautogui.hotkey('ctrl', 'v'):模拟按下 Ctrl + V 键,将剪切板中的文本粘贴到记事本中。pyautogui 是一个非常强大的库,可以模拟键盘、鼠标等输入。

time.sleep(2):等待 2 秒钟,确保文本完全粘贴到记事本。

10. 保存文件到桌面

desktop_path = os.path.join(os.path.expanduser("~"), r"Desktop\需求征集令.txt")
pyautogui.hotkey('ctrl', 's')
time.sleep(2)
write_to_clipboard(desktop_path)
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')

desktop_path = os.path.join(os.path.expanduser("~"), r"Desktop\需求征集令.txt"):构造保存文件的路径,os.path.expanduser("~") 获取当前用户的家目录,然后拼接桌面的路径。

pyautogui.hotkey('ctrl', 's'):模拟按下 Ctrl + S 键,触发保存文件的操作。

time.sleep(2):等待 2 秒钟,确保保存对话框弹出。

write_to_clipboard(desktop_path):将文件保存路径写入剪切板。

pyautogui.hotkey('ctrl', 'v'):粘贴路径到文件名框中。

pyautogui.press('enter'):按下回车键,保存文件。

11. 显示保存成功的提示

pyautogui.alert(desktop_path, title='文件已保存')

使用 pyautogui.alert() 弹出一个提示框,通知用户文件已经成功保存到桌面。

总结

通过上述代码,我们能够模拟操作记事本,自动输入文本并保存文件到桌面。通过 Python 的自动化库 pyautogui、win32gui 和 win32clipboard,我们可以轻松地控制 Windows 应用程序并进行文本处理,这对于一些重复性任务非常有用。

以上就是使用Python模拟操作windows应用窗口详解的详细内容,更多关于Python模拟操作windows窗口的资料请关注脚本之家其它相关文章!

相关文章

  • python发送邮件脚本

    python发送邮件脚本

    这篇文章主要为大家详细介绍了发送邮件python脚本,支持多个附件,中文,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 跟老齐学Python之重回函数

    跟老齐学Python之重回函数

    在本教程的开始部分,就已经引入了函数的概念:《永远强大的函数》,之所以那时候就提到函数,是因为我觉得函数之重要,远远超过一般。这里,重回函数,一是复习,二是要在已经学习的基础上,对函数有更深刻的理解。
    2014-10-10
  • 关于Numpy中数组维度的理解

    关于Numpy中数组维度的理解

    这篇文章主要介绍了关于Numpy中数组维度的理解,多维Numpy数组也可以叫张量(tensor),当前所有机器学习系统都是使用张量作为基本数据结构,张量是一个数据容器,它包含的数据几乎是数值数据,因此它也是数字的容器,需要的朋友可以参考下
    2023-09-09
  • Python实现将字典内容保存到Excel文件的四种方法

    Python实现将字典内容保存到Excel文件的四种方法

    Python 中的字典是一个数据集合,其中每个值对应一个键,它们是无序的、可变的,并且对字典中存储的值和键的数据类型没有限制,本文给大家介绍了Python实现将字典内容保存到Excel文件的四种方法,需要的朋友可以参考下
    2024-07-07
  • python3爬虫中引用Queue的实例讲解

    python3爬虫中引用Queue的实例讲解

    在本篇内容里小编给大家整理的是一篇关于python3爬虫中引用Queue的实例讲解内容,有兴趣的朋友们可以学习下。
    2020-11-11
  • python图片由RGB空间转成LAB空间的实现方式

    python图片由RGB空间转成LAB空间的实现方式

    这篇文章主要介绍了python图片由RGB空间转成LAB空间的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Python实现高效地读写大型文件

    Python实现高效地读写大型文件

    Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下
    2025-01-01
  • Pytorch计算网络参数的两种方法

    Pytorch计算网络参数的两种方法

    PyTorch是一个流行的深度学习框架,它允许研究人员和开发者快速构建和训练神经网络,计算一个PyTorch网络的参数量通常涉及两个步骤,本文给大家介绍了在PyTorch中计算网络参数量的一般方法,需要的朋友可以参考下
    2024-05-05
  • Python删除指定字符之前或之后所有内容的方法

    Python删除指定字符之前或之后所有内容的方法

    本文主要介绍了Python删除指定字符之前或之后所有内容的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python创建与遍历二叉树的方法实例

    python创建与遍历二叉树的方法实例

    这篇文章主要给大家介绍了关于python创建与遍历二叉树的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论