bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
7 déc. 2008 à 18:34
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 2009
-
8 déc. 2008 à 02:42
Bonjour,
Comment fait-on pour récupérer les noms et handles de toutes les top-level windows d'un processus? Supposons que pipo.exe a lancé 3 fenêtres (top level, visibles dans la barre des tâches), comment je récupère ces infos? J'ai pas réussi à trouver de solution...
if ( hWndChild != IntPtr.Zero )
return hWndChild;
}
return hWndParent;
}
// Close ou Dispose le processus à la fin.
public Process GetProcessFromPoint( Point p )
{
try
{
IntPtr hWnd = GetWindowFromPoint( p );
if ( hWnd != IntPtr.Zero )
{
uint processId;
GetWindowThreadProcessId( hWnd, out processId );
return Process.GetProcessById( ( int )processId );
}
}
catch
{
// ..
}
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 7 déc. 2008 à 21:21
Je progresse... J'arrive à recupe les HWND des fenetres avec EnumDesktopWindows, je peux meme recuperer le process id associés avec GetWindowThreadProcessId, mais j'arrive toujours pas à récupérer le nom de l'executable qui possède cette fenêtre ou ce process id :(
Pourtant ya moyen, si on clique sur une fenetre dans Microsoft Spy++, dans l'onglet "process" on a le process id, si on clique dessus, il nous sort le bon module name...
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 8 déc. 2008 à 00:24
Bon voilà j'abandonne, jme suis simplifié la tache et j'ai utlisé FindWindowEx en filtrant par la bonne classe.
Du coup impossible de vérifier à coup sur que le hWnd appartient bien à pipo.exe, mais faudrait vraiment avoir pas de bol pour avoir un autre programme qui utilise exactement le même nom de classe pour ses fenêtres...
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 8 déc. 2008 à 02:42
Erf Process.GetProcessById tout simplement...
Du coup ca me mélange du .NET et de l'API Windows, il doit bien y'avoir moyen de tout faire via l'API Windows, m'enfin l'essentiel c'est que ça marche.