当前位置: 首页 > news >正文

tauri实用教程:阻止除控制台关闭程序外的全部手动关闭

效果预览

当尝试关闭程序时

第一步设置监听事件用于监听窗口关闭,并拦截

// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use tauri::{api::dialog::confirm};fn main() {println!("🔄 启动Tauri应用...");tauri::Builder::default().on_window_event(|event| { // 从这里开始match event.event() {tauri::WindowEvent::CloseRequested { api, .. } => {//阻止默认关闭api.prevent_close();let window = event.window().clone();confirm(Some(&window.clone()),"提示","你确定要退出应用吗?",move |answer| {if answer {let _ = window.close();}},);}_ => {} //todo}}).invoke_handler(tauri::generate_handler![]).run(tauri::generate_context!()).expect("error while running tauri application");
}

第二步设置前端无边框时的触发事件的方法,如果没有设置无边框则不需要

// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use tauri::{api::dialog::confirm, Manager};use crate::setup::setup_handler::close_window_event;
mod driver;
mod invoke_handler;
mod setup;fn main() {println!("🔄 启动Tauri应用...");tauri::Builder::default().setup(|app| {close_window_event(app); // 新增关闭触发事件Ok(())}).on_window_event(|event| {match event.event() {tauri::WindowEvent::CloseRequested { api, .. } => {//阻止默认关闭api.prevent_close();let window = event.window().clone();confirm(Some(&window.clone()),"提示","你确定要退出应用吗?",move |answer| {if answer {let _ = window.close();}},);}_ => {} //todo}}).invoke_handler(tauri::generate_handler![]).run(tauri::generate_context!()).expect("error while running tauri application");
}

第三部前端设置

// windows.ts
// TODO 窗口放大缩小
import { emit } from "@tauri-apps/api/event";
import { appWindow } from "@tauri-apps/api/window";
export const min = () => {appWindow.minimize()
}
export const max = () => {appWindow.toggleMaximize();
}
export const close_windows = async () => {await emit('window-close-request')
}

http://www.dtcms.com/a/296698.html

相关文章:

  • 大模型-batch之static batch
  • 基于Matlab图像处理的水果分级系统
  • 【软件与环境】--Visual Studio2022安装教程
  • JMeter压测黑马点评优惠券秒杀的配置及请求爆红问题的解决(详细图解)
  • 在Ubuntu上使用QEMU学习RISC-V程序(2)gdb调试
  • 2025年7月23日 AI 今日头条
  • C++ 基础入门
  • 144. 二叉树的前序遍历
  • rt-thread加一个库
  • matrix-breakout-2-morpheus靶机通关教程
  • Android Studio历史版本快速下载(二次修改记录)
  • Shell的正则表达式
  • (nice!!!)(LeetCode 每日一题) 2322. 从树中删除边的最小分数 (深度优先搜索dfs + 树)
  • linux C -glib库的基本使用
  • 【华为机试】1208. 尽可能使字符串相等
  • 蚁群优化算法(Ant Colony Optimization, ACO)简介
  • Scrcpy启动闪退
  • Function Calling:让大模型学会使用工具
  • es0102---语法格式、数据类型、整合springboot、创建库、创建映射、新增数据、自定义查询
  • tensorflow搭建神经网络
  • SQL基础⑩ | 数据类型篇
  • 哈希表模拟实现
  • Java学习日记_廖万忠
  • Spring Cloud Alibaba Sentinel 源码阅读之流量控制算法
  • C++编程基础四大件
  • Bright Data 实战指南:从竞品数据抓取到电商策略优化全流程
  • 探秘 VSAR软件:CAN报文转DBC信号的便捷工具
  • 力扣189:轮转数组
  • 5 个适合创意创作的网站,灵感不设限
  • 基于markdown封装的前端文档编辑工具,markdown.js的解析与应用