谁能提供一个tauri+rust +vue 监听程序关闭时调用方法的代码或者思路吗?

我需要在tauri程序关闭时调用cmd去kill一个服务,但我一直找不到这个时机,请求帮助


回答:

使用 rust Tauri 自带的方法

pub fn on_window_event<F: Fn(GlobalWindowEvent<R>) + Send + Sync + 'static>(

self,

handler: F

) -> Self

 tauri::Builder::default()

.on_window_event(|event| {

match event.event() {

tauri::WindowEvent::CloseRequested { api, .. } => {

//阻止默认关闭

api.prevent_close();

....

进行你的操作

....

// let window = event.window().clone();

// window.close();

}

_ => {} //todo

}

})


回答:

Hmm,或许你应该提供一下你之前都做过哪些尝试,这样可能更容易找到能帮到你的关键点。主要是我也还没有用 tauri 封装过完整的应用,我只能通过文档来猜测一下或许可用的方案。

首先应该是利用 event 模块来监听和程序关闭相关的事件吧:https://tauri.app/v1/api/js/event,看起来比较接近的事件有两个:

谁能提供一个tauri+rust +vue  监听程序关闭时调用方法的代码或者思路吗?

从名字上推测应该还是 WINDOW_DESTROYED 事件更符合你需求的场景。

回调触发之后就通过 tauri.invoke 方法来跟后端通信:https://tauri.app/v1/api/js/tauri#invoke

那么后端这边就是要写一个 Rust 函数来具体执行 kill process 逻辑了:

use port_killer::{kill};

#[tauri::command]

fn kill_my_service() {

kill(8080)

}

上面这个例子随便写的,具体要怎么 kill 你的服务这就看你的要求了

相关的内容这里会比较全面一些:Calling Rust from the frontend


回答:

你可以在 rust 中监听以下两个事件,具体用哪个看你的需求(我也没用过这两个事件)。

谁能提供一个tauri+rust +vue  监听程序关闭时调用方法的代码或者思路吗?
https://docs.rs/tauri/1.3.0/tauri/enum.RunEvent.html

最后,再提供个示例代码,不过我这个是监听 ThemeChanged 事件的。

fn main() {

tauri::Builder::default()

.setup(|app| {

let window = app.get_window("main").unwrap();

window_shadows::set_shadow(&window, true).expect("不支持为该平台添加窗口效果!");

let tray_menu = tauri::SystemTrayMenu::new()

.add_item(CustomMenuItem::new("visible".to_string(), "显示/隐藏"))

.add_item(CustomMenuItem::new("center".to_string(), "居中"))

.add_item(CustomMenuItem::new("close".to_string(), "关闭"));

let tray_handle = tauri::SystemTray::new()

.with_menu(tray_menu)

.build(app)

.unwrap();

change_icon(window.theme().unwrap(), window, tray_handle);

Ok(())

})

// .system_tray()

.on_system_tray_event(handle_tray_event)

.invoke_handler(tauri::generate_handler![open_in_private])

.plugin(tauri_plugin_store::Builder::default().build())

.build(tauri::generate_context!())

.expect("初始化程序时出错!")

.run(|app_handle, event| match event {

tauri::RunEvent::WindowEvent { event, .. } => match event {

tauri::WindowEvent::ThemeChanged(theme) => change_icon(

theme,

app_handle.get_window("main").unwrap(),

app_handle.tray_handle(),

),

_ => {}

},

_ => {}

});

}

以上是 谁能提供一个tauri+rust +vue 监听程序关闭时调用方法的代码或者思路吗? 的全部内容, 来源链接: utcz.com/p/934465.html

回到顶部