I want my java app to lock the windows desktop after a specific timeout. I have a timer which works fine, but I can't seem to execute the command to lock the workstation.
javax.swing.Timer tim = new javax.swing.Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("CARD NOT PRESENT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// LOCK SCREEN
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("%windir%/System32/rundll32.exe user32.dll,LockWorkStation");
}
});
Is there some mistake in this? Or maybe an easier way to do this?
Try absolute location:
Runtime.getRuntime().exec("C:\\Windows\\System32\\rundll32.exe user32.dll,LockWorkStation");
I think there is a better way to test this :
1) put the command in a .bat file.
2) Run the bat file. does it work ?
3) If so , call the .bat file in your code.
4) Does it work ? If so, then you are done. I dont think there is any value in encoding windows specific code into runtime exec, just keep the bat file as a seperate file in your app .
Runtime.exec sometimes fails because the paths arent the same inside the JVM as they are in the native os.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With