Skip to main content

zerolaunch_plugin_api/services/window/
window_manager.rs

1use crate::host::error::HostApiError;
2use async_trait::async_trait;
3
4/// 窗口管理器 trait,定义平台原语。
5/// 平台实现者实现各原语方法,PluginHandle 通过注入的 WindowManager 委托调用。
6#[async_trait]
7pub trait WindowManager: Send + Sync {
8    /// 根据进程名激活已存在的窗口。
9    /// 参数:process_name - 进程名(如 "chrome.exe",含扩展名)。
10    /// 返回:成功激活返回 Ok(true),未找到窗口返回 Ok(false),失败返回 HostApiError。
11    async fn activate_window_by_process(&self, process_name: &str) -> Result<bool, HostApiError>;
12
13    /// 根据窗口标题的部分内容激活已存在的窗口。
14    /// 参数:title - 窗口标题的部分匹配文本(不区分大小写)。
15    /// 返回:成功激活返回 Ok(true),未找到窗口返回 Ok(false),失败返回 HostApiError。
16    async fn activate_window_by_title(&self, title: &str) -> Result<bool, HostApiError>;
17
18    /// 根据进程 PID 激活已存在的窗口。
19    /// 参数:pid - 进程标识符。
20    /// 返回:成功激活返回 Ok(true),未找到窗口返回 Ok(false),失败返回 HostApiError。
21    async fn activate_window_by_pid(&self, pid: u32) -> Result<bool, HostApiError>;
22}