7
votes

Comment énumérer toutes les fenêtres dans un processus?

Je dois capturer des fenêtres particulières du 3ème processus. Je peux trouver la poignée de la fenêtre principale comme processus.Mainwindowhandle, mais ce que je peux utiliser pour répertorier d'autres fenêtres?

J'utilise C # / .NET


0 commentaires

4 Réponses :



3
votes

the EnumChildWindows fonction pourrait vous aider en dehors. Les fenêtres enfants pourraient également avoir des enfants et ainsi de suite.

Il y a aussi GetWindow et < Un href = "http://msdn.microsoft.com/en-us/library/ms633495(vs.85).aspx" rel = "Nofollow Noreferrer"> EnumthreadWindows

Un autre message ici avec d'autres détails: obtenir des poignées à Toutes les fenêtres d'un processus


1 commentaires

Merci pour ce nom - je fermera la question lorsque le problème sera résolu



3
votes

Aplication 3ème partie a lancé d'autres fenêtres non comme vitres enfants.

Il est possible de savoir quelle est la structure à l'aide d'un outil spy ++ fourni avec Visual Studio.

Après cela, j'ai pu trouver la fenêtre nécessaire à l'aide de la fonction Findwindowex à l'aide de WindowClassName (prise de SPY ++): LastWindows = FindWindowex (intPtr.zero, lastwindows, M.WindowClassName, NULL);


0 commentaires

2
votes

Utilisez l'API Enumwindows ( et si vous voulez EnumChildWindows ) Xxx pré>

Vérifiez quel processus chaque fenêtre appartient à l'aide de l'API Win32 GetWindowThreadProcessid P>

[DllImport("user32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern int GetWindowThreadProcessId(HandleRef handle, out int processId);


0 commentaires