Maison > développement back-end > C++ > Comment énumérer toutes les fenêtres appartenant à un processus spécifique dans .NET ?

Comment énumérer toutes les fenêtres appartenant à un processus spécifique dans .NET ?

Susan Sarandon
Libérer: 2025-01-05 19:00:40
original
848 Les gens l'ont consulté

How to Enumerate All Windows Belonging to a Specific Process in .NET?

Comment énumérer toutes les fenêtres appartenant à un processus spécifique dans .NET

Pour énumérer toutes les fenêtres créées par un processus spécifique, vous pouvez utiliser la méthode suivante. Tout d’abord, obtenez l’ID de processus d’un processus spécifique. Vous pouvez ensuite appeler la méthode EnumerateProcessWindowHandles dans le code suivant pour énumérer tous les handles de fenêtre appartenant au processus.

delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam);

[DllImport("user32.dll")]
static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn,
    IntPtr lParam);

static IEnumerable<IntPtr> EnumerateProcessWindowHandles(int processId)
{
    var handles = new List<IntPtr>();

    foreach (ProcessThread thread in Process.GetProcessById(processId).Threads)
        EnumThreadWindows(thread.Id, 
            (hWnd, lParam) => { handles.Add(hWnd); return true; }, IntPtr.Zero);

    return handles;
}
Copier après la connexion

L'exemple suivant imprimera les titres de toutes les fenêtres appartenant au processus nommé "explorer" :

const uint WM_GETTEXT = 0x000D;

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, 
    StringBuilder lParam);

static void Main(string[] args)
{
    foreach (var handle in EnumerateProcessWindowHandles(
        Process.GetProcessesByName("explorer").First().Id))
    {
        StringBuilder message = new StringBuilder(1000);
        SendMessage(handle, WM_GETTEXT, message.Capacity, message);
        Console.WriteLine(message);
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal