jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013
-
10 juin 2010 à 17:22
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)