是否可以在另一个进程的主窗口上显示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);
}
如果可能的话,这就是它的工作原理,但是对我似乎不起作用。
这个链接可能会为这个问题提供更多信息:如何使子进程窗口在我的进程中以模态方式显示?
form.ShowDialog()
会在另一个进程中打开它吗? - Adam K Dean