菜单

核心架构

相关源文件

本文档深入探讨了 PowerToys 的核心架构,重点关注中央运行程序(Runner)、模块加载系统和 Windows 集成。它介绍了主进程 PowerToys.exe 如何协调整个套件、管理单个实用程序模块以及与 Windows shell 集成。

有关各个 PowerToys 模块及其功能的信息,请参阅 PowerToys 模块。有关设置系统和配置管理详情,请参阅 设置管理

系统概览

PowerToys 遵循一种中心辐射(hub-and-spoke)架构,其中一个中央运行程序(Runner)进程协调多个实用程序模块。该系统设计为模块化,允许各个实用程序独立加载、配置和管理,同时共享通用基础设施。

来源:src/runner/main.cpp149-180 src/runner/settings_window.cpp34-35 src/runner/tray_icon.cpp18 PowerToys.sln5-30

核心组件

运行程序进程 (PowerToys.exe)

运行程序作为中央协调器,在 PowerToys.exe 中实现。它处理:

组件职责关键文件
主循环Windows 消息处理和事件处理src/runner/main.cpp226
模块管理加载、启动和协调实用程序模块src/runner/main.cpp147-200
设置协调管理配置并与设置 UI 进行通信src/runner/settings_window.cpp40-64
系统集成托盘图标、启动注册、Windows 钩子src/runner/tray_icon.cpp272-323
进程生命周期权限提升处理、重启逻辑、关机协调src/runner/restart_elevated.cpp16-55

模块加载系统

PowerToys 使用硬编码的已知模块列表在启动时加载。该系统从特定的 DLL 文件加载模块并调用标准化的接口函数。

来源:src/runner/main.cpp149-200

进程间通信架构

运行程序通过命名管道与设置 UI 通信,提供双向通信以进行配置更新和系统控制。

来源:src/runner/settings_window.cpp324-535 src/runner/settings_window.cpp170-246 src/common/interop/two_way_pipe_message_ipc.cpp

启动和初始化流程

PowerToys 启动流程遵循特定顺序,以确保正确初始化和加载模块。

来源:src/runner/main.cpp319-521 src/runner/main.cpp96-236

Windows 系统集成

PowerToys 在多个层面与 Windows 集成,以提供系统级功能

集成点实现目的
托盘图标tray_icon.cpp用户界面入口点、上下文菜单
全局钩子centralized_kb_hook.cppcentralized_hotkeys.cpp系统级键盘和鼠标事件捕获
Shell 扩展特定模块的 DLL文件资源管理器上下文菜单和预览处理程序
Toast 通知notifications.cpp用户反馈和更新通知
COM 集成comUtils.cppWindows COM 对象交互
注册表集成自动启动、设置存储Windows 启动和配置持久化

权限提升和安全模型

PowerToys 根据用户设置和所需功能动态处理权限提升。

来源:src/runner/main.cpp443-492 src/runner/restart_elevated.cpp16-55 src/common/utils/elevation.h

更新系统架构

更新系统提供自动版本检查和安装功能。

来源:src/common/updating/updating.cpp86-155 src/common/updating/updating.cpp173-199 src/common/updating/updating.cpp201-244