Microsoft:Python轻松实现微软数字覆盖自动化

Python 实现微软 UI 自动化(数字覆盖交互

微软数字覆盖(Numeric Overlay) ,是 Windows 系统自带的快速访问键 / 数字标记 功能(按 Alt 键触发,给可点击 UI 元素显示数字 / 字母,直接按对应键操作),本质是Windows UI 自动化(Microsoft UI Automation)能力。

开箱即用的 Python 工具,实现:

  • 触发 Windows 数字覆盖标记
  • 定位、点击、输入 UI 元素
  • 模拟数字覆盖按键操作
  • 支持所有 Windows 桌面应用(记事本、浏览器、Office、系统窗口等)

一、依赖安装

bash 复制代码
# 核心:微软 UI 自动化库
pip install pywinauto
# 可选:键盘模拟增强
pip install pynput

二、完整工具代码(直接运行)

python 复制代码
# -*- coding: utf-8 -*-
"""
Windows 数字覆盖 UI 自动化工具
功能:触发数字覆盖、定位元素、模拟点击/按键、自动化操作
"""
import time
import pywinauto
from pywinauto import Application, Desktop
from pywinauto.keyboard import send_keys
from pywinauto.findwindows import ElementNotFoundError

class WindowsOverlayAutomator:
    def __init__(self):
        """初始化自动化工具"""
        self.app = None
        self.window = None
        print("✅ Windows 数字覆盖 UI 自动化工具已启动")
        print("ℹ️  快捷键:Alt 键 = 触发系统数字覆盖标记")

    def connect_window(self, title_regex: str):
        """
        连接目标窗口(支持模糊匹配标题)
        :param title_regex: 窗口标题关键词(如:记事本、Edge、设置)
        """
        try:
            # 连接桌面已打开的窗口
            self.window = Desktop(backend="uia").window(title_regex=title_regex)
            self.window.wait('visible', timeout=5)
            self.window.set_focus()  # 激活窗口
            print(f"✅ 已连接窗口:{self.window.window_text()}")
            return True
        except ElementNotFoundError:
            print(f"❌ 未找到窗口:{title_regex}")
            return False

    def trigger_overlay(self):
        """触发 Windows 数字覆盖标记(按 Alt 键)"""
        send_keys("{ALT}")
        print("🔢 已触发系统数字覆盖标记")
        time.sleep(0.2)

    def click_by_overlay_key(self, key: str):
        """
        模拟数字覆盖按键点击(核心功能!)
        :param key: 数字覆盖显示的按键(如 "1", "2", "A", "B")
        """
        send_keys(key)
        print(f"🖱️  已模拟点击覆盖按键:{key}")
        time.sleep(0.3)

    def click_by_text(self, text: str):
        """通过文本定位 UI 元素并点击(无需手动看数字)"""
        try:
            elem = self.window.child_window(title=text, control_type="Button")
            elem.click()
            print(f"🖱️  已点击文本元素:{text}")
        except ElementNotFoundError:
            print(f"❌ 未找到文本元素:{text}")

    def input_text(self, text: str):
        """向激活的输入框输入文本"""
        send_keys(text, with_spaces=True)
        print(f"⌨️  已输入文本:{text}")
        time.sleep(0.2)

    def list_all_controls(self):
        """打印窗口内所有可交互 UI 元素(调试用)"""
        print("\n📋 窗口内可交互元素:")
        self.window.print_control_identifiers()

# ====================== 示例:快速使用 ======================
if __name__ == "__main__":
    # 1. 创建自动化工具实例
    auto = WindowsOverlayAutomator()
    
    # 2. 连接目标窗口(修改为你要操作的窗口标题)
    auto.connect_window("记事本")  # 示例:记事本
    # auto.connect_window("设置")   # 示例:Windows 设置
    # auto.connect_window("Edge")    # 示例:Edge浏览器
    
    # 3. 触发数字覆盖标记
    auto.trigger_overlay()
    
    # 4. 模拟数字覆盖按键(手动看屏幕上的数字,替换成对应按键)
    # auto.click_by_overlay_key("1")
    # auto.click_by_overlay_key("2")
    
    # 5. 直接输入文本
    # auto.input_text("Hello Windows 数字覆盖!")
    
    # 可选:打印所有元素(调试用)
    # auto.list_all_controls()
    
    print("\n🎉 操作完成!")

三、核心功能说明(你最关心的)

1. 触发数字覆盖

python 复制代码
auto.trigger_overlay()  # 等价手动按 Alt 键,显示数字标记

2. 模拟数字覆盖点击(核心!)

  1. 运行代码触发覆盖后,看屏幕上的数字 / 字母
  2. 直接传入对应字符即可点击:
python 复制代码
auto.click_by_overlay_key("5")  # 点击覆盖标记 5
auto.click_by_overlay_key("A")  # 点击覆盖标记 A

3. 免手动看数字:直接按文本点击

python 复制代码
auto.click_by_text("保存")
auto.click_by_text("确定")
auto.click_by_text("关闭")

四、快速上手步骤

  1. 打开你要操作的软件(如记事本、设置、Office、微信
  2. 修改代码中 connect_window 的窗口名称
  3. 运行代码 → 自动触发数字覆盖
  4. 看屏幕上的数字 → 调用 click_by_overlay_key 完成操作

五、进阶实用场景

场景 1:自动化打开 Windows 设置

python 复制代码
auto.connect_window("设置")
auto.trigger_overlay()
auto.click_by_overlay_key("6")  # 假设网络是 6
auto.click_by_overlay_key("2")  # 假设 WIFI 是 2

场景 2:自动化记事本输入 + 保存

python 复制代码
auto.connect_window("记事本")
auto.input_text("这是自动化输入的内容")
send_keys("{VK_MENU down}f{VK_MENU up}")  # Alt+F 打开菜单
auto.click_by_overlay_key("1")  # 保存

六、关键优势

  1. 完全基于微软官方 UI 自动化,稳定不封号
  2. 支持所有 Windows 桌面应用
  3. 模拟人类操作,和手动按数字覆盖完全一致
  4. 代码轻量,无需安装额外系统组件

总结

  1. 这个工具直接实现了微软数字覆盖交互 ,核心是 trigger_overlay + click_by_overlay_key
  2. 依赖只有 pywinauto,安装简单、运行稳定
  3. 可直接改造成自动化脚本、批量工具、GUI 小软件
相关推荐
m0_6948455720 小时前
CRUD (Nestjsx)部署教程:自动生成RESTful接口
服务器·人工智能·后端·开源·自动化·restful
QQ6765800820 小时前
基于深度学习YOLO的苹果采摘点图像识别 苹果枝条分割识别 苹果分割检测 苹果茎叶分割识别 果园自动化采摘设备目标识别算法第10386期
深度学习·yolo·自动化·苹果采摘点图像·苹果枝条分割·苹果茎叶分割·果园自动化采摘设备
黑金IT21 小时前
当博弈论遇见AI开发,研发即博弈,对抗即进化
人工智能·自动化
Crazy CodeCrafter1 天前
服装实体店现在还适合转电商吗?
大数据·运维·人工智能·经验分享·自动化·开源软件
天空属于哈夫克31 天前
企业微信 API 选型指南:内部开发、代开发还是第三方?
自动化·企业微信·api
木心术11 天前
openclaw与Hermes的优劣势对比
人工智能·python·opencv·自动化
kuankeTech1 天前
汇信云·盘古发布 开启外贸AI新时代
大数据·人工智能·自动化·数据可视化·软件开发
云飞云共享云桌面1 天前
共享云主机告别传统电脑——制造工厂研发部门2台三维设计云主共享给20个设计师并发用
大数据·运维·服务器·自动化·电脑·制造
北京耐用通信1 天前
自动化行业异构集成实践:耐达讯自动化实现CAN转EtherCAT高效互操作
人工智能·科技·网络协议·自动化·信息与通信
Dola_Zou1 天前
从MVTec 视觉算法的授权与分发,深度解析视觉算法防护架构与商业变现闭环
安全·计算机视觉·自动化·视觉检测