SendKeys在我的c#应用程序中不工作/被阻止
本文关键字:工作 我的 应用程序 SendKeys | 更新日期: 2023-09-27 18:20:39
我的代码中有一个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}");