jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013
-
2 mars 2006 à 14:25
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013
-
30 oct. 2008 à 18:31
Bonjour à tous
J'essaye de simuler l'envoi d'un touche dans la fenêtre de saisie d'une appli externe.
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013 8 mars 2006 à 15:26
J'ai commencé par tester avec WM_SETTEXT, et ça ne marche pas non plus.
En fait, l'appli externe est écrite dans un langage exotique que je ne connais pas. Par contre, ce que je peux constater avec SPY++, c'est qu'aucun des contrôles disposés dans la fenêtre principale de l'appli ne possède un classname standard Windows.
Par exemple, la fenêtre principale a un classname "TWINDOW2" et un caption (le titre de la fenêtre), et tous les contrôles de cette fenêtre (zone d'édition, boutons, checkbox...) ont le même classname (TWINDOW1) et un caption null.
Original non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013 28 juin 2006 à 12:06
Salut viasante
Hélas non, je n'ai pas résolu mon problème, et j'ai même laissé tomber.
Par contre, si tu trouves quelque chose, fais-moi signe...
(Mon appli à interfacer était écrite en NSDK)
J'ai eu un technicien de Nat System qui m'a expliqué qu'ils utilisent une couche qui masque l'accès à leurs fenêtres, donc impossible d'utiliser l'API windows. Il va tout de même demander à un collègue et me rappelle demain soir.
robin42p
Messages postés19Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention19 décembre 2008 13 sept. 2006 à 14:33
L'histoire de la couche qui masque est tout à fait exacte.
Il faut réduire cette couche afin de pouvoir récupérer les différents pointeurs nécessaires.
Voici un exemple pour faire défiler une liste (bon c'est pas optimisé mais ça marche !)
Le 1er pointeur correspond à un bouton Annuler
Le 2ème correspond à la fameuse couche qu'il faut réduire
appHandle = GetTopWindow(0)
Do Until appHandle = 0
h = GetWindowText(appHandle, winTitle, 255)
If winTitle Like "*Le titre de l'appli*" Then
h = FindWindowEx(appHandle, ByVal 0&, "TWINDOW1", "")
'Récupération du pointeur de la touche Annuler
hAnnuler = FindWindowEx(h, ByVal 0&, "TWINDOW1", "")
'Récupération du pointeur de la couche supplémentaire
hCouche = FindWindowEx(h, hAnnuler, "TWINDOW1", "")
'Réduction de la couche
ShowWindow hCouche, SW_MINIMIZE
'Récupération du pointeur la liste déroulante
hListe = FindWindowEx(h, hAnnuler, "TWINDOW1", "")
hListe = FindWindowEx(hListe, 0, "TWINDOW1", "")
'Récupération du type du contrôle
wstyle = GetWindowLong(hListe, GWL_STYLE)
's'il s'agit d'une liste alors envoi de la touche BAS
If wstyle = &H50200000 Then
PostMessage hListe, WM_KEYDOWN, VK_DOWN, 0&
End If
'Restauration de la couche
ShowWindow hCouche, SW_SHOWNORMAL