問題:
如何整合C# 程式的指定面板中的單獨應用程序,而不是啟動它外部?
答:
當然可以。透過利用 win32 API,可以在 C# 程式中「使用」另一個應用程式。這涉及獲取外部應用程式的頂部視窗句柄並將其父視窗設定為指定的面板。為了進一步增強集成,您可以調整視窗樣式以最大化其大小並刪除標題欄,從而消除 MDI(多文件介面)效果。
這裡有一個簡化的程式碼片段,用於演示在包含按鈕和麵板的表單:
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; namespace EmbedApplication { public partial class Form1 : Form { [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // Launch the external application Process p = Process.Start("notepad.exe"); // Allow the process to initialize its window Thread.Sleep(500); // Embed the application within the panel SetParent(p.MainWindowHandle, panel1.Handle); } } }
或者,您可以使用 WaitForInputIdle 方法而不是 Sleep延遲來確保外部進程正常運行在將其嵌入面板之前完全初始化:
p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
有關此主題的更多見解和綜合文章,請參閱以下資源:
以上是如何將外部應用程式嵌入到 C# 面板中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!