等待应用程序窗口打开然后执行某些操作

时间:2012-05-08 08:04:40

标签: c#

我对C#很新,但我正在快速学习。我已经看到了各种各样的答案,但我不确定它们是否适合,或者我可能只是没有得到它们。

我有一个业务要求是在系统托盘中编写一个c#app,并在Internet Explorer中执行某个操作时运行。此操作(暂时)是关于Internet Explorer窗口的开头。我需要应用程序不断监视以查看此窗口是否打开然后运行一些代码,一个示例将关闭about窗口并显示一个消息框。

我设法让系统托盘部件工作,我将如何监控窗口存在?

EDIT 要回答评论中的一些问题: 在工作中我们使用仅在IE中运行的预订系统,我们正在寻找一种方法来自动化我们的手动过程的一部分,为此我们认为我们可以有以下过程: 去预订,点击帮助>关于,系统托盘应用程序关闭窗口并运行一些代码来更新数据库。这就是它。

我看了下面的一些内容: How to check if window is opned and close it c#: How do check if another application window is open on my machine (i.e., iterate through all open windows)?

我想我明白我必须查看正在运行的进程并检查相关的程序属性以查看它是否具有正确的窗口名称?我确定我可以让它工作(最终)然而它是等待那个窗口打开我坚持的部分,C#有一个waitfor或者我是否必须编写一个函数来不断检查窗口是否打开?

修改

我已经接受了@Adrian的答案,因为它看起来会想要我想要的;但在阅读完所有评论之后,我去了我的经理,我们讨论了这个问题。现在,我们将通过右键菜单中的文本框将用户输入预订号码的路线放到C#App中。谢谢大家。

1 个答案:

答案 0 :(得分:0)

您可能希望使用FindWindowEx API调用

请参阅此处,例如代码:

http://www.pinvoke.net/default.aspx/user32/findwindowex.html

然后SendMessage关闭窗口。

http://www.pinvoke.net/default.aspx/user32/SendMessage.html

但出于安全原因,您将仅限于可以从其他应用程序捕获/使用的事件。除非应用程序明确允许此类交互。