SystemEvents.SessionEnding
当我关闭我的系统时,事件没有被触发......
问问题
2315 次
2 回答
2
您是否尝试过将此事件作为 microsoft 的示例来实现?像那样
重要提示:控制台应用程序不会引发 SessionEnding 事件。
仅当消息泵正在运行时才会引发此事件。在 Windows 服务中,除非使用隐藏表单或手动启动消息泵,否则不会引发此事件。有关显示如何使用 Windows 服务中的隐藏表单来处理系统事件的代码示例,请参阅 SystemEvents 类。-> .NET Windows 服务中的消息泵
private static int WM_QUERYENDSESSION = 0x11;
private static bool systemShutdown = false;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg==WM_QUERYENDSESSION)
{
MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot");
systemShutdown = true;
}
// If this is WM_QUERYENDSESSION, the closing event should be
// raised in the base WndProc.
base.WndProc(ref m);
} //WndProc
private void Form1_Closing(
System.Object sender,
System.ComponentModel.CancelEventArgs e)
{
if (systemShutdown)
// Reset the variable because the user might cancel the
// shutdown.
{
systemShutdown = false;
if (DialogResult.Yes==MessageBox.Show("My application",
"Do you want to save your work before logging off?",
MessageBoxButtons.YesNo))
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}
}
更多信息 ?请参见此处: SystemEvents.SessionEnding 事件
于 2013-04-10T07:27:08.533 回答
1
你可以试试这个——首先你打开 gpedit.msc,去配置 -> 管理模板 -> 系统 -> 关机选项。现在选择关闭阻止或取消关闭的应用程序的自动终止。
并阅读Microsoft SystemEvents.SessionEnding Event 文档以进行进一步开发。
于 2013-04-10T07:26:53.623 回答