2009-04-27 5 views
1

Je dois utiliser SendMessage pour simuler des clics d'utilisateur dans un programme cible en tant que blocs SendMessage jusqu'à ce que l'événement déclenché soit terminé. La raison en est que ce blocage permet de détecter si des boîtes de dialogue se sont ouvertes à la suite du clic. Mon problème actuel est que même si je peux obtenir le clic pour utiliser les messages WM_LBUTTONDOWN et WM_LBUTTONUP consécutivement sur un bouton dans un formulaire mocked up qui ouvre une boîte de dialogue modèle, je n'arrive pas à travailler sur les menus et éléments de menu dans une application Windows standard (Bloc-notes). Toute aide pour obtenir la possibilité d'effectuer des clics sur les éléments de menu d'une manière qui fonctionne serait appréciée. Je peux déjà détecter s'il s'agit d'un élément de menu, il suffit de pouvoir simuler un clic dessus avec un blocage en utilisant SendMessage.Utilisation de SendMessage pour la simulation de clics de souris utilisateur

Vive

Ross

+0

Vous ne savez pas exactement ce que vous voulez: bloquer ou ne pas bloquer? Avez-vous essayé d'utiliser SendInput - c'est la manière habituelle de simuler l'entrée souris/clavier. Vous devez généralement le coupler avec une autre façon de détecter les résultats de l'entrée - par exemple. utiliser WinEvents pour détecter qu'une boîte de dialogue ou un menu est apparu. Il existe également des cadres de test qui font beaucoup de travail pour vous. – BrendanMcK

Répondre

2

Malheureusement, cette page sur win32 hooks dit

souris Simuler et entrée du clavier (WH_JOURNALPLAYBACK). Les hameçons constituent le seul moyen fiable de simuler ces activités. Si vous essayez de simuler ces événements en envoyant ou en envoyant des messages, les composants internes de Windows ne mettent pas à jour l'état du clavier ou de la souris, ce qui peut entraîner un comportement inattendu. Si des raccourcis sont utilisés pour lire des événements de clavier ou de souris, ces événements sont traités exactement comme de véritables événements de clavier ou de souris.

il semble donc que vous pourriez avoir à recourir à une sorte de fonctionnalité macro comme enregistreur pour vos tests automatisés en utilisant WH_JOURNALRECORD et WH_JOURNALPLAYBACK?

+0

Le lien est obsolète, voici un nouveau: http://msdn.microsoft.com/fr-fr/library/windows/desktop/ms644959(v=vs.85).aspx – Qwerty01

Questions connexes