Soalan:
Bagaimana anda boleh menyepadukan aplikasi berasingan dalam panel yang ditetapkan bagi program C#, dan bukannya melancarkannya secara luaran?
Jawapan:
Sudah tentu. Dengan menggunakan API win32, ia boleh "menggunakan" aplikasi lain dalam program C# anda. Ini melibatkan mendapatkan pemegang tetingkap atas aplikasi luaran dan menetapkan tetingkap induknya kepada panel yang ditetapkan. Untuk meningkatkan lagi penyepaduan, anda boleh melaraskan gaya tetingkap untuk memaksimumkan saiznya dan mengalih keluar bar tajuk, menghapuskan kesan MDI (Multiple Document Interface).
Berikut ialah coretan kod yang dipermudahkan untuk menunjukkan proses pembenaman dalam borang yang mengandungi butang dan panel:
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); } } }
Sebagai alternatif, anda boleh menggunakan Kaedah WaitForInputIdle dan bukannya kelewatan Tidur untuk memastikan proses luaran dimulakan sepenuhnya sebelum membenamkannya dalam panel:
p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
Untuk mendapatkan maklumat lanjut dan artikel komprehensif tentang topik ini, rujuk sumber berikut:
Atas ialah kandungan terperinci Bagaimanakah saya boleh Membenamkan Aplikasi Luaran ke dalam Panel C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!