You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pywinauto实现Windows设置中日期自动同步选项的自动化操作

解决Windows时间同步自动开关的Pywinauto问题

问题分析

你的代码核心问题在于:

  • 启动设置窗口后重新调用connect,导致脱离原应用实例,无法正确操作后续控件
  • 导航项的定位和操作方式不准确,没有正确触发页面跳转

修正后的葡萄牙语系统Pywinauto代码

以下代码基于同一个应用实例操作,确保导航和控件交互正确:

from pywinauto import Application
from pywinauto.timings import wait_until

# 打开系统设置窗口
app = Application(backend="uia").start("control system")
main_window = app.window(title_re=".*Configurações.*")  # 匹配葡萄牙语设置窗口标题

# 等待左侧导航栏加载,点击「Hora e idioma」
main_window.child_window(title="Hora e idioma", control_type="ListItem").wait('visible', timeout=20).click()

# 等待「Data e hora」页面加载,定位自动时间设置复选框
date_time_page = main_window.child_window(title="Data e hora", control_type="Pane")
auto_time_checkbox = date_time_page.child_window(title="Definir horário automaticamente", control_type="CheckBox")
auto_time_checkbox.wait('visible', timeout=20)

# 执行关闭再开启操作
if auto_time_checkbox.get_toggle_state() == 1:  # 若当前是开启状态
    auto_time_checkbox.click()
    wait_until(20, 0.5, lambda: auto_time_checkbox.get_toggle_state() == 0)  # 等待关闭
auto_time_checkbox.click()
wait_until(20, 0.5, lambda: auto_time_checkbox.get_toggle_state() == 1)  # 等待开启

更简单的替代方案:直接用命令行同步时间

如果不需要模拟GUI操作,直接执行Windows时间同步命令更高效可靠,无需依赖pywinauto:

import subprocess

# 强制同步时间
subprocess.run(["w32tm", "/resync", "/force"], check=True, capture_output=True, text=True)
print("时间同步完成")

这个命令会直接调用Windows的时间服务进行同步,比GUI操作更稳定,适合自动化场景。

内容的提问来源于stack exchange,提问作者Digital Farmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:15:02