C# 在windows窗体应用程序中运行外部exe
我有一个c#驱动的windows窗体应用程序,我想在其中运行一个exe。该程序是另一个独立的可执行文件。假设exe不是一个dotnet应用程序,而是用另一种语言编写的,这有关系吗C# 在windows窗体应用程序中运行外部exe,c#,C#,我有一个c#驱动的windows窗体应用程序,我想在其中运行一个exe。该程序是另一个独立的可执行文件。假设exe不是一个dotnet应用程序,而是用另一种语言编写的,这有关系吗 所以我想让这个程序位于我的winforms中,我该怎么做??另外,我可以把它放在winforms中的任何地方吗?默认情况下是否已包含类似的属性?谢谢你试过做这些吗?如果是,应采取哪些步骤?感谢您创建了一个很好的开发人员社区。我真的很珍惜这个你可以通过PInvokingSetParent()来做到这一点: 首先,您需要在
所以我想让这个程序位于我的winforms中,我该怎么做??另外,我可以把它放在winforms中的任何地方吗?默认情况下是否已包含类似的属性?谢谢你试过做这些吗?如果是,应采取哪些步骤?感谢您创建了一个很好的开发人员社区。我真的很珍惜这个你可以通过PInvoking
SetParent()来做到这一点
:
首先,您需要在应用程序中启动第三方应用程序:
var clientApplication = Process.Start("PATH_TO_YOUR_EXECUTABLE");
然后将其MainWindowHandle
设置为主窗口句柄:
SetParent(clientApplication.MainWindowHandle, YourMainWindowOrAContainerControl.Handle);
引用fardjad,但它只能运行记事本、firefox、safari等小程序设置名称也不会有什么坏处。重复的?
SetParent(clientApplication.MainWindowHandle, YourMainWindowOrAContainerControl.Handle);
[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
private void button1_Click(object sender, EventArgs e)
{
try
{
Process p = Process.Start(textBox1.Text);
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, panel1.Handle);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}