C# 延迟windows注销(XP、Vista和7)

C# 延迟windows注销(XP、Vista和7),c#,.net,windows,C#,.net,Windows,是否有一种已知的可靠方法可以延迟用户单击注销按钮后注销?我想知道如何延迟或可能取消注销,然后在计数器过期后通过应用程序注销。当注销即将发生时,Windows消息WM\u QUERYENDSESSION将发送给所有应用程序。应用程序可以用否定的答案回复此消息,要求取消注销 从: 应用程序应该尊重用户的意图并返回TRUE。通过 默认情况下,DefWindowProc函数为此消息返回TRUE 如果关闭会损坏正在运行的系统或媒体 如果被烧毁,应用程序可能返回FALSE。然而,这是一种良好的做法 尊重用户

是否有一种已知的可靠方法可以延迟用户单击注销按钮后注销?我想知道如何延迟或可能取消注销,然后在计数器过期后通过应用程序注销。

当注销即将发生时,Windows消息
WM\u QUERYENDSESSION
将发送给所有应用程序。应用程序可以用否定的答案回复此消息,要求取消注销

从:

应用程序应该尊重用户的意图并返回TRUE。通过 默认情况下,DefWindowProc函数为此消息返回TRUE

如果关闭会损坏正在运行的系统或媒体 如果被烧毁,应用程序可能返回FALSE。然而,这是一种良好的做法 尊重用户的行为

在.NET中,此功能由公开。如果将
sessiondingEventArgs
Cancel
属性设置为
true
将请求取消注销


注销部分以前在中被询问过。

我知道,我吹毛求疵;-),但是消息是
WM_QUERYENDSESSION
(不带
S
),几秒钟后,Windows将允许用户终止这些应用程序,从而完成注销/关闭。这是我不希望发生的,我的想法是,此框应保留在所有其他窗口的顶部。如果出现“kill processs”框,那么它将是无用的。我认为,如果应用程序没有正常关闭,则可能会显示终止应用程序,但当应用程序请求取消时,整个注销被取消。例如,如果您有一个未保存的excel文件并注销,excel会询问“是否确实退出而不保存”。如果你在那里按“取消”,我想注销被取消了。试图关闭笔记本电脑的人不会为此感谢你。出于好奇,你为什么要阻止用户关闭/注销?@StephenT,因为我是个混蛋!不,这是一个商业问题。@Capital:“这是一个商业问题”是开发人员提出奇怪问题的最佳通用借口。我喜欢它,尤其是因为它常常是一个隐藏在“商业事件”之间的好故事。@Anders,我知道。不过这是可以接受的!