首页 > 系统相关 >Windows 系统下,软件在运行时通知阻止关机

Windows 系统下,软件在运行时通知阻止关机

时间:2024-04-08 10:55:49浏览次数:30  
标签:关机 关闭 Windows 程序 windows https 软件 com

官方相关文档:https://learn.microsoft.com/zh-cn/windows/win32/shutdown/shutdown-changes-for-windows-vista

https://learn.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-setprocessshutdownparameters

https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-shutdownblockreasoncreate

首先引入 Vanara.User32 的 Nuget 包,提供 Windows API 调用(也可自行根据方法签名进行声明调用)

以 WPF 程序为例,首先在程序运行时,需要将本程序在关机时关闭的优先级提到最高()

public MainWindow()
{
	InitializeComponent();

	// 首先设置为系统最优先关闭的程序,第一时间拦截系统会话结束事件(注销&关机)
	// 避免在关机过程中,其它程序已关闭,就剩下自己这个程序未关闭,以此产生的依赖问题
	Kernel32.SetProcessShutdownParameters(0x4FF, 0);

	// 监听会话结束事件,进行阻止(注销&关机)
	App.Current.SessionEnding += (s, e) =>
	{
		// 中止程序关闭
		e.Cancel = true;

		// 阻止关机并说明原因(用户仍可通过“仍要关闭”继续)
		User32.ShutdownBlockReasonCreate(new WindowInteropHelper(this).Handle, "你还有事情没完成,不要关机啊~~~");

		// 尝试取消关机,但貌似没什么用
		Process.Start("shutdown", "/a");
	};
}

Vanara 参考:https://github.com/dahall/Vanara

标签:关机,关闭,Windows,程序,windows,https,软件,com
From: https://www.cnblogs.com/xwgli/p/18120654

相关文章

  • 论基于架构的软件设计方法(ABSD)及应用(系统架构师2024最新版)
    须知哈喽,大家订阅专栏后可以私信添加博主获得一对一论文,以及案例分析指导。论文可以直接背下来考试用,感谢支持 文章目录须知摘要部分:正文部分:创作指导 摘要部分:本文以某银行统一收单平台项目为例,主要论述了ABSD方法在该项目中的具体应用。2020年1月,我参与......
  • 游戏开发:设计软件的充值流程
    渠道后台(ChannelServer)渠道SDK(SoftwareDevelopmentKit)软件中央数据后台(CenterServer)软件服务端(Server)软件客户端(Client)创单流程(CreateOrder)Client向Server发起创单请求,Server转发请求到CenterServer,CenterServer生成本次充值订单号(研发订单号:developorder)并返回;Cli......
  • 【4036】基于小程序+ssm实现的软件学院会议室管理系统
    作者主页:Java码库主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。收藏点赞不迷路 关注作者有好处文末获取源码技术选型【后端】:Java【框架】:ssm【前端】:小程序【JDK版本】:JDK1.8【服务器】:tomca......
  • 项目管理软件怎么选?
    在选择项目管理软件时,需要重点考虑以下几个方面:可视化程度通过甘特图的方式直观展现了整个项目的任务安排、进度状况和时间线,这种可视化的特性让项目管理人员能够一目了然地把控项目全貌。好的项目管理软件应该具备出色的可视化能力,让数据更加清晰直观。 数据透明度好......
  • yay和debtap和pacman结合安装软件,manjaro还可以这么安装软件
    看到网上把欧路词典说的那么好,正好觉得goldendict用的不够顺手,打算试试,安装过程有点波折,记录如下:1.常规做法,sudopacman-Seudic没有这个软件,那就yay-Seudic,这次倒没有提示没有软件,这可以archlinux系列的软件宝库啊2.中途出现如下错误:无法读取配置文件'/home/nication/.conf......
  • adb工具安装——windows
    1、工具包下载下载地址:https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn 2、工具包解压解压后进入platform-tools文件下,并copy此路径 3、环境变量配置系统属性-高级-环境变量在系统变量path中添加拷贝的路径 4、cmd中验证安装情况在......
  • FL Studio Producer Edition 2024直接安装版(Windows Mac)免激活
    今天为大家展示了FLStudio24.0.99.4077ProducerEdition2024年最新完整汉化版安装激活教程,今天让我们看一看还有哪些新变化?FLStudio24.0.99.4077ProducerEdition全称FruityLoopsStudio2024ProducerEdition,就是大家熟悉的水果编曲软件,一个全能的音乐制作软件,......
  • 软件设计师25--逻辑结构设计
    软件设计师25--逻辑结构设计考点1:关系模式相关概念数据模型关系模型相关概念完整性约束考点2:E-R图转换关系模式逻辑结构设计-E-R模型转关系模式E-R图转关系模式考点1:关系模式相关概念数据模型层次模型网状模型关系模型面向对象模型注:数据模型三要素:数据结构......
  • 8.1 使用 rpm 命令-安装-查看-卸载-rpm 软件包
    8.1软件包的管理软件包的类型rpm二进制包------》已经使用GCC编译后的rpm概述:RPM是RedHatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及TurboLi......
  • 辽宁省第二十一届职业院校技能大赛应用软件系统开发赛项(高职组)赛题①
    辽宁省第二十一届职业院校技能大赛应用软件系统开发赛项(高职组)赛题第1套需要应用软件系统开发赛项资料或培训可联系博主。有资源!!!目录竞赛说明模块一:系统需求分析任务1:制造执行MES—计划排产(5分)任务2:制造执行MES—项目维护(5分)任务3:供应链SCM—销售管理—销售合同(5分)......