在进程上使用waitFor命令时遇到问题。我的代码是这样的
//preconditions
try{
// lock the work station
Process p= Runtime.getRuntime().exec("C:\\Windows\\System32\\rundll32.exe user32.dll,LockWorkStation");
int exitval=p.waitFor();
// If the authentication is successful
if(exitval==0)
{
//statements to insert into database
}
}
catch(IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e) {
e.printStackTrace();
}
该过程可以很好地锁定屏幕,但是在用户实际能够使用退出值'0'进行身份验证并且程序正在将语句插入到我的数据库中之前退出。我希望该过程等待用户成功通过身份验证,然后将我的数据插入数据库中。我在Google上搜索了很多,但都没有成功。是否应该使用其他过程锁定屏幕?
最佳答案
LockWorkStation
是一个异步函数。它将始终立即返回,而无需等待解锁。从控制台运行C:\Windows\System32\rundll32.exe user32.dll,LockWorkStation
时,您甚至可能在屏幕锁定之前不久看到下一个命令提示符。换句话说,这与Java和Process.waitFor()
无关。