2009-04-19 5 views
3

Je travaille sur un logiciel d'automatisation de test. Pour le faire fonctionner, il faut "jeter un coup d'oeil" sur le bureau et toutes les fenêtres ouvertes. Il a besoin de savoir quelles fenêtres sont ouvertes et quels contrôles elles contiennent. Il doit donc faire quelque chose de similaire à ce que fait Spy ++ (Spy ++ de Visual Studio). Est-ce que quelqu'un sait comment Spy ++ obtient toutes les informations? Existe-t-il des méthodes Windows que l'on peut appeler pour récupérer des informations sur les fenêtres ouvertes?Comment un logiciel comme Spy ++ obtient-il l'information?

Répondre

8

Vous pouvez utiliser EnumWindows pour obtenir toutes les fenêtres de niveau supérieur. Au sein du lpEnumFunc, vous pouvez appeler FindWindowEx pour obtenir des fenêtres/contrôles enfants de chaque fenêtre de niveau supérieur, puis toute autre fonction intéressante qui vous donne des informations dont vous avez besoin, par ex. GetClassName, GetClassInfo, GetClientRect etc etc. Jetez un oeil here pour plus

4

C'est ce qu'on appelle un windows hook. Extrayez l'API Win32 SetWindowHookEx.

Il existe différents types de hooks, ils résident dans une DLL et cette fonction DLL est appelée par Windows pour le type de messages Windows d'un thread spécifique ou tous les threads dans le même bureau.

Veuillez également voir mon related answer on Windows hooks here.

+0

merci de toute façon, ces crochets sont "l'autre grande chose" dont j'ai besoin ... –

Questions connexes