我有一个在关机期间发生的问题。我有一段用 C++ 编写的代码,它被包装在一个 .dll 中并注入到其他应用程序中。它做了很多事情,包括启动另一个用 C# 编写的应用程序(服务器)。
但是,在启动关机后,c++ 代码会启动 C# 应用程序,因为它已被关机杀死,由于系统即将关机而立即崩溃。
然后一个错误框会停止关机,直到用户处理它,这很烦人。有没有办法询问操作系统,“嘿,你要关闭/重新启动/注销吗?” 所以在发生这种情况时我不启动应用程序?我想任何一端的解决方案都可以。
==编辑==
为了更清楚一点。作为注入的 .dll 运行的代码不能假定其注入的应用程序具有任何类型的“窗口”。另外,我想要一些我可以查询的东西,而不是我必须听的事件,因为我可能会因为时间问题错过那个事件。我想知道是否有任何功能可以有效地给我这样的东西
bool IsSystemShutting();
在这方面,C# 选项和 C++ 选项一样适用于我。但在 .NET 框架中, SystemEvents.SessionEnding和SystemEvents.SessionEnded都是事件与属性。通常情况下,我会在事件发生后注册这个事件,所以这对我没有好处。