Jump to content

  • Log In with Google      Sign In   
  • Create Account


C# .Net and Window Shutdown detection


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
8 replies to this topic

#1 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 10 November 2006 - 05:24 PM

The subject-line says most of it. I am using C# and .Net but if you have a general method please post it and I'll try to apply it in C#. My particular program needs to be aware if it is the user shutting it down or if it is windows. Also, if it is Windows, it needs to be able to detect if Windows has shut it down because Windows itself is shutting down. If anyone knows how to make this happen, please post. Thanks guys, ~B

Sponsor:

#2 kryat   Members   -  Reputation: 685

Like
0Likes
Like

Posted 10 November 2006 - 05:36 PM

I know that System.Windows.Forms have two events, FormClosing and FormClosed. FormClosing fires before a form has closed, and FormClosed fires after.

Both events pass an EventArgs, one of the properties is a CloseReason enum.

Example:


private void ViewerForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.WindowsShutDown)
{
//Windows is shutting down!
}
}



See MSDN for details, but that should put you on the right track.

#3 Endurion   Crossbones+   -  Reputation: 3306

Like
0Likes
Like

Posted 10 November 2006 - 06:40 PM

FormClose may come too late, when your app is already shut down. If you need to do some cleanup you'd have to listen to WM_ENDSESSION and do the appropriate action.

I'm not sure if there's a .NET equivalent to that Win32 message so you may have to resort to overriding WindowProc.

#4 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 11 November 2006 - 06:38 AM

Kryat: That's a really simple way to do it that I did not know about. Thanks for that, however, I am not using a Form. My program hides in the system tray and instantiates a form whenever it is doubleclicked or the appropriate selection is made from it's context menu.

Would your method still work? and how would I go about registering my own "FormClosing" and "FormClosed" event handlers without changing my base class to a form?

Endurion: I'm going to look up what that entails exactly, as I've never done it in C#. Thanks for the submission.

#5 Martee   Members   -  Reputation: 476

Like
0Likes
Like

Posted 11 November 2006 - 06:50 AM

Have a look at SystemEvents.SessionEnding.

#6 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 11 November 2006 - 07:03 AM

Just realized I'm not being very clear.

Forgot to mention my main program is an "ApplicationContext" and the message loop is being handled by Application.Run().

So I don't think I can get into the FormClosed/Closing events, but if you can think of a way I can, all the better.

For the bigger picture all I need to be able to tell the difference whether Windows is shutting down or if the user used "Ctrl+Alt+Del" and "End Task" to quit the program. (I'm already handling in case the user uses "Kill Process", so this leaves me with handling shutdown vs, end task).

Thanks again,
~FenixRoA

#7 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 11 November 2006 - 07:04 AM

Martee: Thanks, I'm going to check that out now.

EDIT:
Thanks Martee, that looks EXACTLY like what I'm looking for.
I'm going to give it a shot.

#8 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 11 November 2006 - 07:36 AM

Hmm... So close.

I don't really know how to hook into Windows Messages. Problem is, again, I'm NOT using a Form class. It is just an ApplicationContext. Therefore there is no WndProc method to override.

If you guys know how I could hook into the windows messages, that would be great.

Thanks,
~B

#9 FenixRoA   Members   -  Reputation: 142

Like
0Likes
Like

Posted 11 November 2006 - 10:58 AM

Actually nevermind Martee. Your recommendation appears like it will work.

My mistake, I looked at the sample code which doesn't use the said event.

Thanks, much appreciated
~FenixRoA




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS