2010-11-19 24 views
0

Je programme en C et je clique à distance sur un bouton de façon programmée. Je l'ai fait dans des applications simples et diverses, mais j'ai rencontré un problème. J'ai essayé d'utiliser Spy ++ (Mon ancienne version 6.0) et l'outil WinID beaucoup plus convivial.FindWindowEx classe/titre d'aide

Un exemple serait ceci; J'essaie de trouver la classe requise et la 'fenêtre' à l'intérieur de calc.exe. Dans Windows 7, la classe de ces boutons est juste "Button". D'accord, mais quand vous cherchez le titre, c'est "" (NULL). Comment pourrais-je passer cela? J'ai l'ID du bouton, mais comment utiliser l'ID au lieu du titre "window"?

Si vous ne comprenez pas ce que j'essaie de dire, laissez-moi voir si je peux le simplifier; J'ai le nom de la classe, mais je n'ai pas le titre. Comment puis-je sélectionner un hwnd à une fenêtre si je n'ai pas le titre (mais j'ai l'ID)?

+0

Ce pue code fragile qui pourrait se briser dans la prochaine version de Windows. Que faites-vous exactement? Pourquoi essayez-vous de cliquer par programme sur un bouton? –

+0

Cela me semble quelque chose d'intéressant. être capable d'automatiser une tâche comme un programme macro. C'est juste un truc «fou de voir ce que tu peux faire» pour moi. – Saustin

Répondre

2

Si vous avez l'ID du bouton, il suffit d'utiliser GetDlgItem pour obtenir sa poignée:

HWND hButton = GetDlgItem(hParent, buttonID); 
+0

Désolé pour la réponse tardive; J'ai essayé d'utiliser l'ID de bouton avec votre fonction, cependant, cela provoque une erreur et quand j'utilise GetLastError et tout ça, je n'ai que l'inutile "L'opération s'est terminée avec succès". EDIT: Je l'ai essayé sur une autre application, en utilisant votre méthode et cela a fonctionné. Cependant, cela ne fonctionne pas sur toutes les applications. Seriez-vous capable de connaître la cause? Peut-être des autorisations? – Saustin

+0

@Saustin: Cela devrait fonctionner tant que vous avez le bon parent et le bon ID. Parfois, le contrôle réel peut être imbriqué dans une autre fenêtre enfant, de sorte que le parent peut être incorrect. – casablanca

+0

Je n'avais aucune pensée qui pourrait se produire. Merci! – Saustin