获得子进程的形式

cla*_*amp 7 .net c# forms

我试图获取我开始的进程的主要形式,但FromChildHandle和FromHandle始终返回null.然而,MainWindowHandle非零.

IntPtr p = process_wrapper.MainWindowHandle;
Form form = (Form) Control.FromChildHandle(p);
if (form != null)
{
    form.Close();
}
Run Code Online (Sandbox Code Playgroud)

dog*_*ose 2

如果相关表单是由您的应用程序生成的,则您只能检索表单作为控件。您无法从另一个进程检索表单,因为您的父进程不知道子进程的句柄 <->Control 映射。

如果您只想“停止”子进程(form.close()?),您可以简单地停止整个进程。要么“干净”,要么强制:

process.CloseMainWindow()process.kill()