加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows C或C#中,您可以询问操作系统当前是否正在关闭/重新启

发布时间:2020-12-14 02:20:37 所属栏目:Windows 来源:网络整理
导读:我有一个在关机期间发生的问题.我有一段用C编写的代码,它包含在.dll中并注入到其他应用程序中.它做了很多事情,包括启动用C#编写的另一个应用程序(服务器). 但是,在启动关闭后,c代码启动C#应用程序,因为它已被关闭杀死,因为系统即将关闭而立即崩溃. 然后一个
我有一个在关机期间发生的问题.我有一段用C编写的代码,它包含在.dll中并注入到其他应用程序中.它做了很多事情,包括启动用C#编写的另一个应用程序(服务器).

但是,在启动关闭后,c代码启动C#应用程序,因为它已被关闭杀死,因为系统即将关闭而立即崩溃.

然后一个错误框停止关闭,直到用户处理它,这很烦人.有没有办法问操作系统,“嘿,你关闭/重启/退出了吗?”所以当发生这种情况时,我不会启动应用程序?我想两端的解决方案都没问题.

==编辑==

再澄清一点.作为注入的.dll运行的代码不能假设它注入的应用程序具有任何类型的“窗口”.此外,我想要一些我可以查询的东西,而不是我必须听的事件,因为我可能因为时间错过了那个事件.我想知道是否有任何类型的功能可以有效地给我这样的东西

bool IsSystemShutting();

在这方面,C#选项对我和C选项都有用.但在.NET框架中,SystemEvents.SessionEnding和SystemEvents.SessionEnded都是事件与属性.我经常会在事件发生后报名参加此次活动,所以这对我来说没有好处.

解决方法

WM_ENDSESSION和 WM_QUERYENDSESSION消息适用于此方案.在启动关闭,重新启动或注销过程时,Windows会将这些窗口消息发送到窗口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读