2012-01-07 64 views
1

在我当前的项目中,我需要将密钥发送到我已启动的进程(尽管这个进程没有任何控制权,但它是第三方)。现在要获取这些命令,EA的Origin始终在其主屏幕上(即在登录后完全加载)。如何找到一个进程是否已完全加载

现在,我不知道我该如何检测何时达到这一点。我尝试过等待输入空闲,但输入空闲在我可以发送密钥之前已经很长时间实现了。

有没有我可以使用,当该程序已经达到这种状态检测一些其他的方法?我想也许我可以检测(如果)应用程序何时自己发出信号,但我不知道该如何发现它是否完全发出信号,或者发出什么声音来听取它。

任何援助非常感谢!

+2

由于您已经观察到的原因,这种类型的UI自动化特别细腻,极易出错。我不强烈建议您研究其他方法,而不是一起讨论包含'SendKeys'的脆弱解决方案。 – 2012-01-07 13:05:52

+0

这不是'SendKeys'我遇到了麻烦,那只是我想如何处理与流程沟通命令的一个方面(我可能会使用pinvoke)。我只是试图找到一种有效了解过程所处状态的方法。我同意,虽然这将是一个脆弱的解决方案,如果有的话,一起入侵。 – Frohman 2012-01-07 13:58:48

回答

1

如果主窗口具有鲜明的标题你可以enumerate windows反复,等到出现过程的主要窗口。

顺便说一句 - 我曾与发送键(有时键没有打通)一些不好的经历,我发现将发送键与阅读的过程中UI(再次 ​​- 枚举窗口)效果最好。

1

是否有应用程序的任何视觉指示器,如特定标签的文本,显示了当它准备好接受输入?如果是这样的话,您可以使用windows accessibility API(通过P/Invoke)来观察这一点并将其用作触发器。也可以使用API​​来监视实际输入控件何时获得焦点。您甚至可以使用API​​而不是SendKeys来获得更可靠的交互。

相关问题