views:

231

answers:

3

Hi!

Is it possible make some handler that will do something when user shutdown computer with Java on Windows XP (optional, win7)? How?

Thanks.

A: 

You need a window listening to the WM_QUERYENDSESSION message.

lunixbochs
+4  A: 

It is possible to add a shutdown hook to your Java program which is invoked if the JVM is shutdown for any reason (other than System.exit()) including O/S shutdown. Is that what you want?

Use: java.lang.Runtime.addShutdownHook(Thread):

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // shutdown code here
        }
    });
Software Monkey
iirc, at leats in Java 6, shutdown hooks still run even if System.exit() is called - the only time they are not is if the process is sent a kill command (or the OS equivalent)
aperkins
+4  A: 

a shutdown hook should do the job.

From API Doc:

Registers a new virtual-machine shutdown hook. The Java virtual machine shuts down in response to two kinds of events:

  • The program exits normally, when the last non-daemon thread exits or when the exit (equivalently, System.exit) method is invoked, or
  • The virtual machine is terminated in response to a user interrupt, such as typing ^C, or a system-wide event, such as user logoff or system shutdown.
Runtime.getRuntime().addShutdownHook(new Thread() {
  public void run() {
    // do something
  }
});
sfussenegger