2011-10-04 34 views
2

我正在启动一个外部应用程序System.Diagnostics.Process,这个外部进程在某个时刻打开一个对话框,用户输入内容,然后单击确定。我需要的是等待我的应用程序(我开始进行外部处理的应用程序),直到用户插入了某些内容并单击确定。在那之后,我需要在外部进程上做更多的工作,然后关闭它。C#过程自动化

回答

1

是的,这是可能的。有许多方法可以从流程句柄和/或ID开始获取窗口信息。看到这个question and responses入门。你很可能最终会使用P/Invoke到Win32 API来完成这个任务,但有很多好的例子可以完成这个任务。

一旦你有窗口句柄,你可以使用定时器轮询方案来测试存在,或在你的情况下,存在,然后窗口的消失。

0

如果您开始的应用程序在用户与对话框交互后存在,那么您只需拨打Process.WaitFroExit(),直到您启动的进程退出为止,您的代码才会继续。

有相当一些有用的功能与在System.Diagnostics.Process级的流程交互(我假设你正在使用启动这个外部应用程序)

+1

不要以为你正确地阅读他的问题。 – StefanE

+0

是的,我开始的应用程序存在于对话框之后。问题是,在关闭对话框后,我需要在该应用程序上执行更多任务。 – hs2d

1

这是可能的,但也有它背后的一些工作。首先,您需要将代码作为非托管代码运行,因为您需要使用Win32 API挂接Windows操作系统事件。

因此,一个选项将有一个循环寻找对话框打开,暂停你的代码正在做什么,并继续当对话框消失。