简单说下原理吧:
假设A程序以及运行,需要在A中放一个容器(A本身也可以)去存放一会将要运行的B程序。
启动B程序,并获取B程序的句柄,这个需要调用Win32 API,引用如下
[DllImport("user32.dll", EntryPoint = "FindWindow")]
public static extern int FindWindow(
string lpClassName,
string lpWindowName
);
3. 还是调用Win32 API,将A程序的容器设置成B容器的父对象,引用如下
[DllImport("user32.dll", EntryPoint = "SetParent")]
public static extern int SetParent(
int hWndChild,
int hWndNewParent
);
A程序中的代码:
System.Diagnostics.Process.Start("B.exe");
SetParent(FindWindow(null, "B程序的Title"), this.Handle.ToInt32());
当然了,获取B程序的句柄,办法更多,直接用processinfo最好,只需要一句代码即可:
SetParent(System.Diagnostics.Process.Start("B.exe").Handle, this.Handle.ToInt32());
标签:窗口,应用程序,C#