在C# 面板中嵌入應用程式
將外部應用程式嵌入到C# 程式的自訂面板中可以在單一使用者中無縫集成多個應用程式介面。該技術不是從外部觸發應用程序,而是提供了更有凝聚力和更方便的用戶體驗。
解決方案:利用 Win32 API
Win32 API 提供了嵌入外部的解決方案透過操縱視窗句柄來操作應用程式。關鍵步驟包括:
程式碼範例
以下程式碼示範如何在C# 面板中嵌入notepad.exe:
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; namespace EmbeddedApplication { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Process p = Process.Start("notepad.exe"); Thread.Sleep(500); // Allow the process to open its window SetParent(p.MainWindowHandle, panel1.Handle); } [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); } }
替代方法
而不是使用Thread.Sleep() 中,程式碼可以使用 WaitForInputIdle來確定應用程式的視窗何時完全加載:
Process p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
其他資源
有關更全面的指南嵌入外部應用程序,請參考代碼項目文章: [Hosting EXE Applications in a WinForm專案](https://www.codeproject.com/Articles/398354/Hosting-EXE-Applications-in-a-WinForm-project)。
以上是如何在 C# 面板中嵌入外部應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!