我正在使用System.Diagnostics.Process
启动外部应用程序,此外部进程会在某个时刻打开一个对话框,用户在其中输入内容,然后单击“确定”。我需要的是等待我的应用程序(我启动外部进程的那个),直到用户插入了一些内容并单击OK。在那之后,我必须在该外部进程上执行更多任务,然后关闭它。
答案 0 :(得分:1)
是的,这是可能的。有许多方法可以从进程句柄和/或ID开始获取窗口信息。有关入门的信息,请参阅此question and responses。你最有可能最终使用P / Invoke来实现Win32 API,但是有很多很好的例子可以帮助你完成这个任务。
一旦你有了窗口句柄,就可以使用计时器轮询方案来测试是否存在,或者在你的情况下,是否存在,然后是窗口的消失。
答案 1 :(得分:1)
这是可能的,但背后有一些工作。首先,您需要将代码作为非托管代码运行,因为您需要使用Win32 API挂接Windows操作系统事件。
因此,一个选项是让循环查找要打开的对话框,暂停代码正在执行的操作,并在对话框消失时继续。
答案 2 :(得分:0)
如果您在用户与对话框交互后启动的应用程序存在,那么您只需致电Process.WaitFroExit()
,您的代码将不会继续,直到您启动的流程退出。
有很多有用的函数可以与System.Diagnostics.Process类中的进程进行交互(我假设你用它来启动这个外部应用程序)