C# 过程自动化

C# 过程自动化,c#,automation,C#,Automation,我正在用System.Diagnostics.Process启动一个外部应用程序,这个外部过程会打开一个对话框,用户在其中键入一些内容,然后单击“确定”。我需要的是等待我的应用程序(我启动外部进程的应用程序),直到用户插入一些内容并单击OK。在那之后,好的,我必须在那个外部进程上再做一些任务,然后关闭它。是的,这是可能的。有许多方法可以从进程句柄和/或ID开始获取窗口信息。有关入门信息,请参阅此。您很可能最终使用Win32 API的P/Invoke来实现这一点,但是有几十个很好的例子可以实现这一

我正在用
System.Diagnostics.Process
启动一个外部应用程序,这个外部过程会打开一个对话框,用户在其中键入一些内容,然后单击“确定”。我需要的是等待我的应用程序(我启动外部进程的应用程序),直到用户插入一些内容并单击OK。在那之后,好的,我必须在那个外部进程上再做一些任务,然后关闭它。

是的,这是可能的。有许多方法可以从进程句柄和/或ID开始获取窗口信息。有关入门信息,请参阅此。您很可能最终使用Win32 API的P/Invoke来实现这一点,但是有几十个很好的例子可以实现这一点


拥有窗口句柄后,您可以使用计时器轮询方案测试窗口是否存在,或者在您的情况下,是否存在,然后窗口是否消失。

如果用户与对话框交互后启动的应用程序存在,则您可以调用
Process.WaitFroExit()
并且在您启动的进程退出之前,您的代码不会继续


类中有很多有用的函数用于与进程交互(我假设您正在使用这些函数来启动此外部应用程序)

这是可能的,但背后还有一些工作要做。首先,您需要将代码作为非托管代码运行,因为您需要使用Win32 API钩住Windows OS事件


因此,一个选项是让循环查找要打开的对话框,暂停代码正在执行的操作,并在对话框消失后继续。

是的,我正在启动的应用程序在对话框之后存在。问题是在对话框关闭后,我需要在该应用程序上执行更多任务。