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}