PostMessage

jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013 - 10 juin 2010 à 17:22
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013 - 14 juin 2010 à 22:10
Bonjour à tous

J'écris une application qui interface Outlook pour envoyer des messages comportant des pièces jointes.

La fameuse fenêtre d'avertissement signalant qu'un programme accède à la messagerie monte bien sûr en premier plan et stoppe le processus

J'essaie donc de simuler le click sur le bouton Oui avec le code suivant :

lHwnd = FindWindow(vbNullString, "Microsoft Office Outlook")
If lHwnd > 0 Then
hChld = FindWindowEx(lHwnd, 0,NullString, "Oui")
PostMessage(lHwnd, WM_COMMAND, GetDlgCtrlID(hChld), BN_CLICKED * &H10000 + hChld)
End If

Je récupère bien le handle du bouton "Oui", mais le postmessage est inopérent

J'ai également essayé avec
PostMessage(hChld, WM_LBUTTONDOWN, 1, &HC001D)
PostMessage(hChld, WM_LBUTTONUP, 0, &HC001D)

mais c'est pareil

Quelqu'un a-t-il une idée ?

jocou

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 juin 2010 à 12:14
Salut

Solution 1 : Le "Oui" a un raccourci clavier
- Tu récupères le handle de ta fenêtre
- tu donnes le focus à cette fenêtre
- tu fais un SendKeys (d'un Return si le "Oui" est validé par défaut, ou d'un Alt-O s'il y a un raccourci clavier comme "Oui")

Solution 2 : Tu envoies un clic
- Tu récupères le handle de ta fenêtre
- tu récupères le handle du bouton
- tu récupères son RECT avec GetWindowRect
- tu calcules le centre de ce carré (à une vache près)
- tu positionnes ta souris avec SetCursorPos (*)
- tu cliques en utilisant l'API mouse_event pour simuler un clic (Down et Up), exemple
Call mouse_event(MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, ByVal 0)
(*) Tu peux bypasser cette étape si tu fournis les coordonnées directement à mouse_event

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jocou Messages postés 52 Date d'inscription lundi 5 janvier 2004 Statut Membre Dernière intervention 19 novembre 2013
14 juin 2010 à 22:10
OK, merci pour ta réponse

jocou
0
Rejoignez-nous