Maison >développement back-end >C++ >Comment puis-je intégrer des applications externes dans des panneaux C# ?

Comment puis-je intégrer des applications externes dans des panneaux C# ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 07:53:45252parcourir

How Can I Embed External Applications Within C# Panels?

Intégration d'applications dans des panneaux C#

L'intégration d'applications externes dans des panneaux personnalisés d'un programme C# permet une intégration transparente de plusieurs applications au sein d'un seul utilisateur interface. Au lieu de déclencher des applications en externe, cette technique offre une expérience utilisateur plus cohérente et plus pratique.

Solution : Utilisation de l'API Win32

L'API Win32 fournit une solution pour l'intégration d'applications externes. applications en manipulant les poignées de fenêtre. Les étapes clés consistent à :

  1. Obtenir le handle de la fenêtre principale de l'application.
  2. Définir le handle parent de la fenêtre de l'application sur le handle du panneau souhaité.
  3. En option, ajustez le style de la fenêtre pour maximiser l'application et supprimez la barre de titre pour une interface plus intégrée. apparence.

Exemple de code

Le code suivant montre comment intégrer notepad.exe dans un panneau C# :

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);
    }
}

Approche alternative

Au lieu d'utiliser Thread.Sleep(), le code peut utiliser WaitForInputIdle pour déterminer quand la fenêtre de l'application est entièrement chargée :

Process p = Process.Start("notepad.exe");
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, panel1.Handle);

Ressources supplémentaires

Pour un guide plus complet sur l'intégration d'applications externes, reportez-vous à l'article Code Project : [Hébergement d'applications EXE dans un WinForm projet](https://www.codeproject.com/Articles/398354/Hosting-EXE-Applications-in-a-WinForm-project).

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn