From dbec37cd3d11bb4a37677bc14b1b075ef43e9811 Mon Sep 17 00:00:00 2001 From: Julian Freeman Date: Tue, 3 Mar 2026 13:19:18 -0400 Subject: [PATCH] support context menu --- src-tauri/src/cleaner.rs | 12 +++++ src-tauri/src/lib.rs | 6 +++ src/App.vue | 110 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) diff --git a/src-tauri/src/cleaner.rs b/src-tauri/src/cleaner.rs index 2d70223..ed17a05 100644 --- a/src-tauri/src/cleaner.rs +++ b/src-tauri/src/cleaner.rs @@ -155,6 +155,18 @@ pub fn get_children(parent_path: String, state: &DiskState) -> Vec results } +pub async fn open_explorer(path: String) -> Result<(), String> { + const CREATE_NO_WINDOW: u32 = 0x08000000; + // 使用 /select, 参数可以在打开目录的同时选中目标 + Command::new("explorer.exe") + .arg("/select,") + .arg(&path) + .creation_flags(CREATE_NO_WINDOW) + .spawn() + .map_err(|e| e.to_string())?; + Ok(()) +} + // --- 快速模式配置与逻辑 --- #[derive(Clone)] diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 971d89a..cd169ee 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -24,6 +24,11 @@ async fn get_tree_children(path: String, state: State<'_, cleaner::DiskState>) - Ok(cleaner::get_children(path, &state)) } +#[tauri::command] +async fn open_in_explorer(path: String) -> Result<(), String> { + cleaner::open_explorer(path).await +} + // --- 高级清理命令 --- #[tauri::command] @@ -54,6 +59,7 @@ pub fn run() { start_fast_clean, start_full_disk_scan, get_tree_children, + open_in_explorer, clean_system_components, clean_thumbnails, disable_hibernation diff --git a/src/App.vue b/src/App.vue index ee19bcb..a04d0dc 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@