2011-10-14 61 views
1

我有一个c#提供的windows窗体应用程序,我想在其中运行一个exe文件。该程序是另一个单独的可执行文件。可以说这个exe不是一个dot net应用程序,而是用另一种语言编写的,这有什么关系吗?在windows窗体应用程序中运行一个外部exe文件

所以我想要该程序躺在我的winforms里面,我该怎么做?另外,我可以把它放在winforms的任何地方吗?有没有像默认包含的属性?谢谢。你试过做这些?如果是的话,要采取什么步骤?感谢你为开发人员提供了一个不错的开发者社区。我真的很珍惜这个

+0

设置名称也不会伤害。 –

+0

重复[如何在我的C#程序面板中运行另一个应用程序?](https://stackoverflow.com/questions/758494/how-can-i-run-another-application-within-a-panel-的,我-C锋利程序)? – user34660

回答

4

为此,您可以通过PInvoking SetParent()

[DllImport("user32.dll")] 
     static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 

首先,你需要你的应用程序中启动第三方应用:

var clientApplication = Process.Start("PATH_TO_YOUR_EXECUTABLE"); 

然后设置它的MainWindowHandle主窗口句柄:

SetParent(clientApplication.MainWindowHandle, YourMainWindowOrAContainerControl.Handle); 
0
[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); 
      } 
     } 
} 

参考fardjad,但它只能运行像记事本,Firefox,Safari浏览器的小程序

相关问题