我希望我的java应用程序在特定超时后锁定Windows桌面。我有一个工作正常的计时器,但我似乎无法执行命令来锁定工作站。
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");
}
});
这有什么错误吗?或者可能是一种更简单的方法吗?
答案 0 :(得分:5)
尝试绝对位置:
Runtime.getRuntime().exec("C:\\Windows\\System32\\rundll32.exe user32.dll,LockWorkStation");
答案 1 :(得分:4)
我认为有更好的方法来测试这个:
1)将命令放在.bat文件中。
2)运行bat文件。它有用吗?
3)如果是这样,请在代码中调用.bat文件。
4)它有效吗?如果是这样,那么你就完成了。我不认为将特定于Windows的代码编码到运行时exec中有任何价值,只需将bat文件保存为应用程序中的单独文件即可。
Runtime.exec有时会失败,因为JVM中的路径与本机操作系统中的路径不同。
答案 2 :(得分:3)
这也很有效(在Windows 7 x86上测试):
final String path = System.getenv("windir") + File.separator + "System32" + File.separator + "rundll32.exe";
Process pr = rt.exec(path + " user32.dll,LockWorkStation");