开发者

How can I Execute a Function when Windows Shut down

开发者 https://www.devze.com 2023-01-23 05:54 出处:网络
How Can I execute a function when Windows shutdown. Here is my scenario, I am mounting a drive using WNetAddConnection2function in my application. Now I want user to set the option if the drive will b

How Can I execute a function when Windows shutdown. Here is my scenario, I am mounting a drive using WNetAddConnection2 function in my application. Now I want user to set the option if the drive will be mounted on next system startup or not.

If he selects , not to mount on next startup , then I need to remove the drive using WNetCancelConnection2 , but this should only happen when user shutdown the system.

I can only think of only solution. Create a service which will check the user option and then decide whether开发者_Go百科 to mount the drive or not.

Are there any other ways to go ahead with it?


If you have a main window (even an invisible one) that can process messages, you can handle the WM_ENDSESSION message.

See: http://msdn.microsoft.com/en-us/library/aa376889(v=VS.85).aspx


If you can make your app into a Windows service (or have your app communicate state with one that you provide) you can perform required actions on receipt of SERVICE_CONTROL_SHUTDOWN in your service control handler function. This would decouple your app that handles user interaction from the shutdown handling, which requires something to be running all the time (what if the user logs off?).


explorer.exe is the GUI process of windows which usually only gets shut down if Windows shuts down (exceptions have to be made for certain error conditions). You could listen on the WM_DESTROY window message for the process ID of explorer.exe and dismount then.


The way I can think of is to:

  1. Register your program to auto Start up (when PC starts). Here's a tutorial on howto.
  2. Store the user option (as mentioned above) in a repository or registry (if you know how). When your app would have started, you can read your registry and act accordingly.
  3. For shutdown, your application will have to hook itself on a SystemEvent to detect shutdown (then you can act accordingly). Here's an example on howto (C#). For C++, you can listen to WM_ENDSESSION message.

I hope that my 2 cents can help you.

0

精彩评论

暂无评论...
验证码 换一张
取 消