Maison >développement back-end >C++ >Comment puis-je intégrer une application externe dans un panneau C# ?
Question :
Comment intégrer un application séparée dans un panneau désigné d'un programme C#, plutôt que de la lancer en externe ?
Réponse :
Certainement. En utilisant l'API win32, il est possible de « consommer » une autre application au sein de votre programme C#. Cela implique d'obtenir le handle de fenêtre supérieur de l'application externe et de définir sa fenêtre parent sur le panneau désigné. Pour améliorer davantage l'intégration, vous pouvez ajuster le style de la fenêtre pour maximiser sa taille et supprimer la barre de titre, éliminant ainsi l'effet MDI (Multiple Document Interface).
Voici un extrait de code simplifié pour démontrer le processus d'intégration dans un formulaire contenant un bouton et un panneau :
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); } } }
Vous pouvez également utiliser la méthode WaitForInputIdle au lieu du délai de mise en veille pour vous assurer que le processus externe est entièrement initialisé avant de l'intégrer dans le panneau :
p = Process.Start("notepad.exe"); p.WaitForInputIdle(); SetParent(p.MainWindowHandle, panel1.Handle);
Pour plus d'informations et un article complet sur ce sujet, reportez-vous à la ressource suivante :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!