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 小软件
相关推荐
薛定谔的猫3691 小时前
深入浅出:大语言模型 Agent 的工作原理与应用
人工智能·自动化·大模型·llm·ai agent
MATLAB代码顾问4 小时前
AI Agent智能体开发实战:LangChain自动化工作流
人工智能·langchain·自动化
zhangfeng11335 小时前
适合 5人以内小团队的Git 工作流 + Code Review + 自动化部署方案 FastAdmin +linunx服务器宝塔系统 外包项目 —
服务器·git·自动化·php·代码复审
zhangrelay6 小时前
云课实践速通系列-基础篇汇总-必修-通识基础和专业基础-2026--工科--自动化、电气、机器人、测控等
linux·笔记·单片机·学习·ubuntu·机器人·自动化
缝艺智研社7 小时前
誉财 YC - 10 + 双头全自动烫标机:服装商标烫印的高效智能之选
人工智能·自动化·新人首发·缝纫机·智能缝纫机
ROBOTGEEKER9 小时前
越疆CR全系列工业协作臂|从3kg轻载到30kg重载,覆盖重复、高精、高危全制造场景
人工智能·机器人·自动化·制造
众创岛9 小时前
Playwright 元素定位
python·自动化
小风吹啊吹~10 小时前
vscode的tunnel链接(Linux 服务器 + Windows 本地电脑版本)
服务器·vscode·microsoft·远程工作
架构源启10 小时前
OpenClaw 只能命令行触发?自研企业微信实现发消息即执行
java·chrome·自动化·企业微信
舟遥遥娓飘飘11 小时前
量化投资体系之二:为 Web 看板集成公众号/财经原始数据
前端·数据分析·自动化·ai编程