在进程上使用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()无关。

09-26 03:22