是否可以在另一个进程的主窗口上显示 WinForms 模式表单?
例如,我的 WinForms 应用程序由一个窗体组成,该窗体在另一个进程的主窗口上具有 PID x。
是否可以在另一个进程的主窗口上显示 WinForms 模式表单?
例如,我的 WinForms 应用程序由一个窗体组成,该窗体在另一个进程的主窗口上具有 PID x。
您可以将其显示为对话框,如下所示:
Form1 frm = new Form1();
frm.ShowDialog(this);
frm.Dispose();
您传递当前IWin32Window
或form
您想成为所有者,因此如果您通过单击父表单的按钮调用它,只需传递this
.
您希望能够获得IWin32Window
另一个进程,这是可能的,但我不知道是否将表单显示为模态。
var proc = Process.GetProcesses().Where(x => x.ProcessName == "notepad").First();
IWin32Window w = Control.FromHandle(proc.MainWindowHandle);
using (Form1 frm = new Form1())
{
frm.ShowDialog(w);
}
如果可能的话,这就是它的工作方式,但是,它似乎对我不起作用。
此链接可能会提供有关该主题的更多信息:如何使子进程窗口在我的进程中显示为模态?