2010-02-10 19 views
8

In C# utilizzando la classe di processo È possibile richiamare l'handle nella finestra principale di un processo, ma è necessario accedere a una finestra che non è la finestra principale del processo. Come posso ottenere l'handle di tutte le finestre di un processo?Ottieni gli handle su tutte le finestre di un processo

risposta

3

P/Invocare la funzione EnumThreadWindows di user32, la richiamata che fornisci sarebbe dato le maniglie delle finestre per un dato thread. Process.GetCurrentProcess().Threads dovrebbe restituire a tutti i thread pertinenti con cui chiamare EnumThreadWindows.

3

È possibile P/Richiamare GetWindowThreadProcessId() per ottenere l'ID del thread per il thread dell'interfaccia utente che possiede la finestra principale. Da lì, puoi trovare qualsiasi altra finestra di primo livello di proprietà di quel thread con EnumThreadWindows(). Qualsiasi finestra secondaria (controlli) di proprietà di una finestra di livello superiore può essere trovata con EnumChildWindows(). Visita pinvoke.net per le necessarie dichiarazioni P/Invoke.

Problemi correlati