Menjalankan Aplikasi Luaran dalam Panel dalam C#
Ramai pembangun telah menghadapi keperluan untuk mencetuskan pelaksanaan aplikasi lain dari dalam program C# mereka , tugas yang biasa dicapai menggunakan kaedah Process.Start(). Walau bagaimanapun, isu yang kurang kerap dibincangkan ialah menjalankan aplikasi luaran ini dalam panel khusus program, dan bukannya membukanya secara berasingan.
Merangkul API Win32 untuk Penyepaduan Aplikasi
Untuk menangani cabaran ini, Win32 API menawarkan penyelesaian. Dengan menggunakan API, anda boleh "mengintegrasikan" aplikasi luaran ke dalam program C# anda, dengan berkesan membenamkannya dalam panel yang telah ditetapkan. Penyepaduan ini melibatkan dua langkah utama:
Kod Contoh untuk Notepad.exe Penyepaduan
Untuk menggambarkan penyepaduan ini, pertimbangkan coretan kod berikut, yang menampilkan borang dengan butang dan panel:
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Windows.Forms; 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); }
Dalam kod ini, peristiwa klik butang mencetuskan pembukaan notepad.exe dalam panel bernama "panel1."
Tambahan Nota:
Satu lagi pendekatan alternatif yang disebut dalam beberapa sumber ialah menggunakan kaedah WaitForInputIdle dan bukannya Thread.Sleep(). Kod yang dikemas kini akan menyerupai yang berikut:
Process p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
Dengan menggunakan teknik ini, anda boleh menyepadukan aplikasi luaran dengan lancar ke dalam panel khusus aplikasi C# anda, menyediakan cara yang mudah dan fleksibel untuk melanjutkan kefungsian program anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan Aplikasi Luaran dalam Panel C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!