我正在做一个应用程序,用于在用户注销时清除临时文件、历史记录等。那么我怎么知道系统是否要注销(在 C# 中)?
问问题
11252 次
4 回答
10
Environment类中有一个属性可以说明关闭过程是否已启动:
Environment.HasShutDownStarted
但经过一番谷歌搜索后,我发现这可能对你有帮助:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (Environment.HasShutdownStarted)
{
//Tackle Shutdown
}
else
{
//Tackle log off
}
}
但是,如果您只想清除临时文件,那么我认为区分关闭或注销对您没有任何影响。
于 2009-06-12T04:15:30.667 回答
8
如果您特别需要注销事件,您可以修改 TheVillageIdiot 的答案中提供的代码,如下所示:
using Microsoft.Win32;
//during init of your application bind to this event
SystemEvents.SessionEnding +=
new SessionEndingEventHandler(SystemEvents_SessionEnding);
void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
if (e.Reason == SessionEndReasons.Logoff)
{
// insert your code here
}
}
于 2009-06-12T14:45:49.233 回答
0
如果您有Windows 窗体,则可以处理该FormClosing
事件,然后检查e.CloseReason
枚举值以确定它是否等于CloseReason.WindowsShutDown
.
private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.WindowsShutDown)
{
// Your code here
}
}
于 2019-08-11T17:45:08.997 回答