当前位置: 首页 > news >正文

Windows自动化Python pyautogui RPA操作

依赖包

import time
import pyautogui
import pyperclip
import os
import psutil
from pywinauto.application import Application

睡眠:


pyautogui.sleep(1)

鼠标事件:


pyautogui.moveTo(100, 100, duration=0.25)
pyautogui.click(100, 100, duration=0.25)
pyautogui.click(10,10)   # 鼠标点击指定位置,默认 PRIMARY 键
pyautogui.click(10,10,button='left')       # 单击左键
pyautogui.click(1000,300,button='right')   # 单击右键
pyautogui.click(1000,300,button='middle')  # 单击中键## 为了更方便,下面的函数包装了click,不需要传参 button
pyautogui.leftClick(10,10)		# 单击左键
pyautogui.rightClick(10,10)		# 单击右键
pyautogui.middleClick(10,10)	# 单击中键# 双击鼠标
pyautogui.doubleClick(10,10)# 三击鼠标
pyautogui.tripleClick(10,10)# 按下 & 释放
pyautogui.mouseDown()   # 鼠标按下
pyautogui.mouseUp()    # 鼠标释放# 拖动鼠标
pyautogui.dragTo(x, y) 绝对位置
pyautogui.drag(x, y) 相对位置# 滚动鼠标 滚动发生在鼠标的当前位置。 传递正整数表示向上滚动, 传递负整数表示向下滚动。
pyautogui.scroll(-100)
pyautogui.hscroll(100)   # 向右滚动100
pyautogui.hscroll(-100)   # 向左滚动100# 按键操作 press
pyautogui.press('enter', 5)   # 连按5次回车
# 按下 & 释放
pyautogui.keyDown('A') : 模拟按键按下;
pyautogui.keyUp('A') : 模拟按键释放;pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')pyautogui.hotkey('ctrl', 'c')

杀死进程:

def kill_process(process_name):for proc in psutil.process_iter(['pid', 'name']):if proc.info['name'] == process_name:try:proc.kill()print(f"Process {process_name} with PID {proc.info['pid']} has been terminated.")except psutil.NoSuchProcess:print(f"Process {process_name} with PID {proc.info['pid']} no longer exists.")except psutil.AccessDenied:print(f"Access denied to terminate process {process_name}.")# 使用
kill_process('AliWorkbench.exe')

获取所有窗口的名称:


titles = pyautogui.getAllTitles()
print("titles: ", titles)

显示窗口:


def make_window_visible(title):try:# 尝试连接到已运行的应用程序app = Application(backend="uia").connect(title=title, timeout=10)window = app.window(title=title)# 确保窗口是可见的并且处于最前面if not window.is_active():window.set_focus()  # 设置焦点,这通常会将窗口带到前台if not window.is_visible():window.show()  # 显示窗口(如果它被最小化或隐藏)print(f"Window '{title}' has been made visible and active.")except Exception as e:print(f"Failed to make window '{title}' visible: {e}")# make_window_visible('微信')

根据图片找元素:


# 这里只返回一个
def close_dialog():try:close_icon_center = pyautogui.locateCenterOnScreen('close_icon.png', grayscale=True, confidence=0.9)pyautogui.sleep(0.01)print("弹框关闭图标-坐标:", close_icon_center)if close_icon_center:pyautogui.leftClick(close_icon_center.x, close_icon_center.y)pyautogui.sleep(0.01)except pyautogui.ImageNotFoundException as ee:print("没有发现弹框关闭图标")# 多个的操作
down_select_icon_centers = list(pyautogui.locateAllOnScreen('down_select_icon.png', grayscale=True, confidence=0.9))
print("下拉箭头长度len:", len(down_select_icon_centers))
pyautogui.leftClick(pyautogui.center(down_select_icon_centers[1]).x, pyautogui.center(down_select_icon_centers[1]).y)

输入文字:


# 这个可能会受到输入法的影响
pyautogui.write()def paste_str(str1):pyperclip.copy(str1)pyautogui.hotkey('ctrl', 'v')# pyperclip.copy('') # 重置粘贴板内容为空# pyperclip.paste() 这是粘贴

打开应用:

# 打开
Application().start("D:/Program Files/AliWorkbench/AliWorkbench.exe")
# 显示
make_window_visible('千牛工作台')
# 根据windows窗口名称获取窗口,并最大化
chat_window = pyautogui.getWindowsWithTitle('千牛工作台')[0]
chat_window.maximize()# win.maximize() # 最大化# win.minimize() # 最小化# win.restore() # 如果是最大/小化,则恢复成正常状态# win.close()

相关文章:

Windows自动化Python pyautogui RPA操作

依赖包 import time import pyautogui import pyperclip import os import psutil from pywinauto.application import Application睡眠: pyautogui.sleep(1)鼠标事件: pyautogui.moveTo(100, 100, duration0.25) pyautogui.click(100, 100, duration0.…...

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…...

RK3568 Android 13 内置搜狗输入法小计

问:为什么写? 答:网上搜出来的都试过了,不行!下面直接上代码和注意事项! 首先到这个目录(/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall&#xff09…...

单片机Day1

目录 一.什么是单片机? 二.单片机的组成 三.封装形式 四.优势 五.分类 通用型: 专用型: 按处理的二进制位可以分为: 六.应用: 七.发展趋势 1.增加CPU的数据总线宽度。 2.存储器的发展。 3.片内1/0的改进 …...

《机器学习》之贝叶斯(Bayes)算法

目录 一、前言 二、贝叶斯算法原理解析 1、贝叶斯公式 2、朴素贝叶斯算法 3、计算步骤 4、例题: (1)、 计算先验概率 (2)、计算条件概率 (3)、计算后验概率 (4)…...

Redis实现高效的负载均衡算法

1. Redis存储设计 我们需要在 Redis 中存储以下信息&#xff1a; 配置列表&#xff08;List<Config>&#xff09;&#xff1a;存储所有配置项。总权重&#xff1a;存储所有配置的总权重。当前轮询状态&#xff1a;存储当前的轮询状态&#xff08;如当前随机值或索引&am…...

虚拟文件系统 VFS

目录 虚拟文件系统 VFS 文件系统挂载过程 虚拟文件系统 VFS 统一标准的系统调用接口&#xff1a; VFS定义了一组标准的文件操作API&#xff0c;如open(), read(), write(), close()等&#xff0c;使得用户空间的应用程序无需关心底层文件系统的具体类型。 下层文件系统必须实现…...

基于Android的民宿租赁系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…...

数据链路层-STP

生成树协议STP&#xff08;Spanning Tree Protocol&#xff09; 它的实现目标是&#xff1a;在包含有物理环路的网络中&#xff0c;构建出一个能够连通全网各节点的树型无环逻辑拓扑。 选举根交换机&#xff1a; 选举根端口&#xff1a; 选举指定端口&#xff1a; 端口名字&…...

OceanBase环境搭建与熟悉全攻略:开启分布式数据库探索之旅

《OceanBase环境搭建与熟悉全攻略&#xff1a;开启分布式数据库探索之旅》 在当今数字化浪潮汹涌澎湃的时代&#xff0c;数据量呈爆炸式增长&#xff0c;业务对数据库的性能、可靠性和扩展性提出了前所未有的要求。OceanBase作为一款极具创新性的分布式数据库&#xff0c;正逐…...

tensor core实现flash_attn_mma_share_kv源码分析

一 源码分析 1.1 函数入口 void flash_attn_mma_stages_split_q_shared_kv(torch::Tensor Q, torch::Tensor K, torch::Tensor V, torch::Tensor O, int stages) {CHECK_TORCH_TENSOR_DTYPE(Q, torch::kHalf) // Q [B,H,N,D]CHECK_TORCH_TENSOR_DTYPE(K, torch::kHalf) // K …...

【源码解析】Java NIO 包中的 MappedByteBuffer

文章目录 1. 前言2. MappedByteBuffer3. 例子4. 属性5. 构造器6. mappingOffset、mappingAddress、mappingLength7. isLoaded 判断内存是否还在内存中8. load 方法将 ByteBuffer 加载到 Page Cache 中9. force 刷盘 1. 前言 上一篇文章我们介绍了 HeapByteBuffer 的源码&#…...

【Docker系列】容器内目录显示异常的解决之道

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

echarts:dataZoom属性横向滚动条拖拽不生效

问&#xff1a; 拖拽的过程中&#xff0c;第一次向右拖拽正常&#xff0c;然后就报错&#xff1a; echarts报错&#xff1a; var pointerOption pointerShapeBuilder[axisPointerType](axis,pixeValue,otherExtent),(axis,pixeValue,otherExtent)下划线红色报错&#xff1a;…...

25/1/12 算法笔记 剖析Yolov8底层逻辑

YOLOv8 是一种基于深度学习的目标检测和图像分割模型&#xff0c;属于 YOLO&#xff08;You Only Look Once&#xff09;系列的最新版本。YOLO 系列模型以其高效的实时目标检测能力而闻名&#xff0c;YOLOv8 在此基础上进行了一些优化和改进。 Yolov8的主要特点&#xff1a; …...

Python双指针

双指针 双指针&#xff1a;在区间操作时&#xff0c;利用两个下标同时遍历&#xff0c;进行高效操作 双指针利用区间性质可以把 O ( n 2 ) O(n^2) O(n2) 时间降低到 O ( n ) O(n) O(n) 反向扫描 反向扫描&#xff1a; l e f t left left 起点&#xff0c;不断往右走&…...

1、docker概念和基本使用命令

docker概念 微服务&#xff1a;不再是以完整的物理机为基础的服务软件&#xff0c;而是借助于宿主机的性能。以小量的形式&#xff0c;单独部署的应用。 docker&#xff1a;是一个开源的应用容器引擎&#xff0c;基于go语言开发的&#xff0c;使用时apache2.0的协议。docker是…...

数据结构与算法之链表: LeetCode 92. 反转链表 II (Ts版)

反转链表 II https://leetcode.cn/problems/reverse-linked-list-ii/description/ 描述 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 示例 1 输入&…...

【PPTist】插入形状、插入图片、插入图表

一、插入形状 插入形状有两种情况&#xff0c;一种是插入固定的形状&#xff0c; 一种是插入自定义的形状。 插入固定的形状时&#xff0c;跟上一篇文章 绘制文本框 是一样一样的&#xff0c;都是调用的 mainStore.setCreatingElement() 方法&#xff0c;只不多传的类型不一…...

三台Centos7.9中Docker部署Redis集群

Docker部署Redis集群 1. 安装 Docker 和 Docker Compose安装 Docker&#xff1a;安装 Docker Compose&#xff1a; 2. 配置 Redis 容器和网络3. 启动 Redis 容器4. 设置 Redis 集群4.1 集群创建异常处理 5. 验证和测试总结 如果 CentOS 服务器上还没有安装 Docker 和 Docker Co…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存&#xff0c;但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程&#xff0c;可以参考这篇文章&#xff0c;我觉得写的非常…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...