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;
                        }
                    }
                }

线程在"发送"完所有密钥后似乎也会冻结,因为它正在等待进程退出,但没有成功。提前感谢您的帮助。我完全被难住了。

SendKeys在我的c#应用程序中不工作/被阻止

正如@Jordy所说,SendKeys.SendWait是问题的解决方案。这将等待处理输入,从而避免在击键操作发生之前进行任何其他操作。

SendKeys.SendWait("{TAB}");而不是SendKeys.Send("{TAB}");