SendKeys在我的c#应用程序中不工作/被阻止
我的代码中有一个if语句,其中包含一个SendKeys在我的c#应用程序中不工作/被阻止,c#,if-statement,sendkeys,C#,If Statement,Sendkeys,我的代码中有一个if语句,其中包含一个shutdownProcess()方法(它使用许多SendKeys.Send调用),单独在if语句中使用时效果非常好: if (waitForRegressionTestToComplete.WaitOne(10*60*1000)) { shutdownProcess(); } 正如我所说,这正是我所希望的。SendKeys.Send正常工作,进程关闭。但是,当我向if语句中添
shutdownProcess()
方法(它使用许多SendKeys.Send
调用),单独在if语句中使用时效果非常好:
if (waitForRegressionTestToComplete.WaitOne(10*60*1000))
{
shutdownProcess();
}
正如我所说,这正是我所希望的。SendKeys.Send
正常工作,进程关闭。但是,当我向if语句中添加其他项时,代码进入shutdownProcess()
并“发送密钥”,但绝对没有结果。方法中发送的前两个键是ALT+TAB x2,以便在失去焦点时重新获得焦点:
SendKeys.Send("%{TAB}");
SendKeys.Send("%{TAB}");
下面是我添加新项后的if语句,它会导致问题:
if (waitForRegressionTestToComplete.WaitOne(10*60*1000))
{
shutdownProcess();
bool processIsStillRunning = true;
while (processIsStillRunning)
{
Process[] processlist = Process.GetProcesses();
processIsStillRunning = false;
foreach (Process process in processlist)
{
if (process.MainWindowTitle.Contains("Process"))
{
processIsStillRunning = true;
}
}
}
线程在“发送”所有密钥后似乎也会冻结,因为它正在等待进程退出——但没有结果。
提前感谢你的帮助。我完全被难住了。正如@Jordy所说,
SendKeys.SendWait
是问题的解决方案。这将等待处理输入,从而避免在击键操作发生之前执行任何其他操作
SendKeys.SendWait(“{TAB}”)而不是
SendKeys.Send(“{TAB}”)代码>您是否尝试过使用Sendkeys.SendWait?我没有。让我试着快速实现它。这个描述看起来很有用。