| Problème d'envoi de touches à une application. | |
|
|
|
Auteur | Message |
---|
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 8:58 | |
| Bonjour. @Klaus. J'ai vraiment besoin de ton aide, suite à un problème d'envoi de touches à une application, sur lequel je bute depuis plusieurs mois. J'ai donc téléchargé la version d'essai du logiciel de traduction Promt, sur leur site: www.promt.fr (menu: Logiciels Promt). L'installation s'est déroulée correctement. Par la suite, j'essaie d'obtenir les traductions en allemand de mots individuels, par programme. Mais cela semble impossible. Après installation, cliquer sur "Dictionnaires électroniques", puis "Démarrer". Pourrais-tu y jeter un coup d'oeil ? Merci de la suite. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 9:40 | |
| Je vais télécharger la version personnelle en version d'essai pour voir de quoi il retourne. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 10:26 | |
| Désolé. Echec de l'installation, sans message précis - juste "Echec de 'installation".
Pour essayer d'avancer, peux-tu poster quelques captures d'écran, en commentant qu'elle partie tu veux capturer ? | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 10:34 | |
| Voici le lien vers l'image. Je souhaiterais récupérer les traductions, par programme, d'un mot quelconque. Ces traductions se trouvent dans l'écran de droite. Merci de la suite. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 11:18 | |
| Alors, s'il te plaît, fais marcher le programme suivant: - Code:
-
dim res%, hnd%, classe$, x%, y%
height 0,80 : width 0,350 edit 1 : top 1,10 : left 1,10 : width 1,300
dll_on "KGF.dll"
repeat res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) res% = dll_call2("GetObjectUnderPosition",x%,y%) if res%<>hnd% hnd% = res% classe$ = string$(255," ") res% = dll_call2("GetObjectClassName",hnd%,adr(classe$)) text 1,"handle="+str$(hnd%)+" Classe="+trim$(classe$) end_if until scancode=27
terminate Place le curseur dans le cadre dont tu veux capturer le contenu et note ce que le EDIT de mon programme montre. Puis, place le curseur jsute au-dessus de ce cadre, à droite de l'icône "?" (il devrait se trouver dans la form de base) et note ce que le EDIT de mon programme montre. Si tu postes ensuite ces deux informations, je pourrai certainement faire quelque chose. EDIT Si, pour la seconde mesure, cela affiche une classe du genre ToolBar, essaie d'agrandir la fenêtre de sorte à faire apparaitre une zone "nue" du fond de la fenêtre, et place le curseur à cet endroit. | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 11:33 | |
| Bonjour.
Voici le contenu de l'objet EDIT après avoir effectué les deux manipulations.
handle=460592 Classe=ListBox handle=395298 Classe=BCGPDockBar:400000:98:10003:10 | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 11:51 | |
| Bon, nouvel essai, avec le code suivant: - Code:
-
dim res%, hnd%, classe$, x%, y%, titre$
height 0,100 : width 0,350 edit 1 : top 1,10 : left 1,10 : width 1,300 edit 2 : top 2,30 : left 2,10 : width 2,300
dll_on "KGF.dll"
titre$ = "Dictionnaire électronique PROMT" hnd% = dll_call2("GetWindowByTitle",1,adr(titre$)) classe$ = string$(255," ") res% = dll_call2("GetObjectClassName",hnd%,adr(classe$)) text 2,"Handle PROMT: "+str$(hnd%)+" Classe="+trim$(classe$) hnd% = 0
repeat res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) res% = dll_call2("GetObjectUnderPosition",x%,y%) if res%<>hnd% hnd% = res% classe$ = string$(255," ") res% = dll_call2("GetObjectClassName",hnd%,adr(classe$)) text 1,"handle="+str$(hnd%)+" Classe="+trim$(classe$) end_if until scancode=27
terminate
Et cette fois, il y a un EDIT supplémentaire à lire - celui avec le handle PROMT. J'ai une information capitale: l'objet recherché est une ListBox. Reste à savoir si l'on peut identifier la form principale et de quel type elle est. C'est l'objet de ce test. | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 11:55 | |
| Voici le contenu du second EDIT:
Handle PROMT: 2491162 Classe=VerDictWindow | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 12:23 | |
| Super ! Etape suivante: Télécharge KGF.dll de mon WebDav, et essaie le code suivant: - Code:
-
dim res%, hnd%, classe$, x%, y%, titre$, hndPROMT%, hnd1%
height 0,100 : width 0,350 edit 1 : top 1,10 : left 1,10 : width 1,300 edit 2 : top 2,30 : left 2,10 : width 2,300
dll_on "KGF.dll"
titre$ = "Dictionnaire électronique PROMT" hndPROMT% = dll_call2("GetWindowByTitle",1,adr(titre$)) classe$ = string$(255," ") res% = dll_call2("GetObjectClassName",hndPROMT%,adr(classe$)) text 2,"Handle PROMT: "+str$(hndPROMT%)+" Classe="+trim$(classe$)
repeat res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) res% = dll_call2("GetObjectUnderPosition",x%,y%) if res%<>hnd% hnd% = res% classe$ = string$(255," ") res% = dll_call2("GetObjectClassName",hnd%,adr(classe$)) text 1,"handle="+str$(hnd%)+" Classe="+trim$(classe$) if hndPROMT%<>0 hnd1% = dll_call1("GetParentwindowFromHandle",hnd%) if hnd1%=hndPROMT% then message "Trouvé dans PROMT !" end_if end_if until scancode=27
' Handle PROMT: 2491162 Classe=VerDictWindow ' ²handle=460592 Classe=ListBox
terminate
Si tu places le curseur dans la ListBox à capturer, tu devrais avoir un message "Trouvé dans PROMT !". Si ça marche, je devrais avoir les éléments nécessaires pour réaliser ta capture. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 12:28 | |
| Question complémentaire: tu dis - Citation :
- handle=460592 Classe=ListBox
handle=395298 Classe=BCGPDockBar:400000:98:10003:10 Est-ce bien ListBox ou TListBox ? | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 12:31 | |
| Il s'agit bien de ListBox.
Et j'obtiens bien le message "Trouvé dans PROMT !" | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 12:59 | |
| On va faire une première tentative de récupération. Recharge KGF.dll de mon WebDav. Puis, lance PROMT en affichant une page dont tu veux récupérer la traduction. Finalement, lance le programme suivant: - Code:
-
dim res%, hndPROMT%, titre$, hndListBox%, classe$
dll_on "KGF.dll"
list 1 : full_space 1
titre$ = "Dictionnaire électronique PROMT" hndPROMT% = dll_call2("GetWindowByTitle",1,adr(titre$))
classe$ = "ListBox" hndListBox% = dll_call2("FindTypedChildWindow",hndPROMT%,adr(classe$))
if hndListBox%<>0 res% = dll_call2("GetListExternalBoxText",hndListBox%,handle(1)) else message "Oups... non trouvé !" end_if
end
C'est un premier essai... | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 13:03 | |
| Nécessaire fait.
Je n'obtiens pas de message d'erreur "Non trouvé" | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 13:13 | |
| Donc, dans la fenêtre du petit programme Panoramic, tu as le texte que tu veux récupérer ? | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 13:16 | |
| Désolé, mais l'objet List de Panoramic ne contient rien ! J'ai relancé avec un Combo, et toujours rien. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 13:36 | |
| Ok, je vois. J'ai trouvé de quoi il retourne, et j'aurai bientôt une version opérationnelle. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:11 | |
| Voilà qui est fait. Recharge KGF.dll à partir de mon WebDav. Lance PROMT sur une page qui t'intéresse. Lance le programme suivant: - Code:
-
dim PROMT% ' PROMT% = 0 : ' pour démo locale PROMT% = 1 : ' pour utilisation avec PROMT
dim res%, hndPROMT%, titre$, hndListBox%, classe$
dll_on "KGF.dll"
caption 0,"KGF"
if PROMT%=0 list 1 : width 1,120 item_add 1,"aaaaaaaaa" item_add 1,"bbbbb" end_if memo 2 : left 2,130 : width 2,200 : height 2,300 : bar_both 2
if PROMT%=1 then titre$ = "Dictionnaire électronique PROMT" if PROMT%=0 then titre$ = "KGF" hndPROMT% = dll_call2("GetWindowByTitle",1,adr(titre$))
classe$ = "ListBox" hndListBox% = dll_call2("FindTypedChildWindow",hndPROMT%,adr(classe$))
if hndListBox%<>0 res% = dll_call2("GetListExternalBoxText",hndListBox%,handle(2)) message "Chargé !" else message "Oups... non trouvé !" end_if
end
Tu devrais trouver les données attendues dans le mémo. | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:18 | |
| J'obtiens le texte suivant dans le memo:
Nouveau:
et aucune autre donnée !! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:27 | |
| Pour vérification: invertis les commentaires sur les lignes 2 et 3, pour vérifier que la DLL marche...
Question subsidiaire: Est-ce que, dans le cadre en question, tu peux taper ctrl/A pour tout sélectionner et ctrl/C pour tout copier ? Car si mon procédé ne marche pas, ce n'est probablement pas une - ListBox standard qu'elle ne s'appelle pas TListBox mais ListBox est troublant. | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:35 | |
| Après vérification, la DLL fonctionne correctement.
Par contre, je n'ai pas accès, dans le cadre, avec CTRL-A, puis CTRL-C.
Et un clic avec le bouton droit de la souris n'affiche aucun menu pop-up !!
Par contre, j'ai accès à un menu "copier", lors d'un clic sur chacun des mots individuellement (in, nach, ...) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:43 | |
| Résumons la situation: 1. le cadre en question est un dérivé d'un composant TListBox (ce qui correspond à un LIST Panoramic). 2. ce dérivé ne parte pas le nom de classe habituel qui devrait être TListBox 3. ce composant bloque manifestement les messages Windows LB_GETCOUNT, LB_GETTEXTLEN et LB_GETTEXT (messages standard gérant un composant TListBox) 4. ce composant bloque également les ctrl/A et ctrl/C
Conclusion: ce composant a été créé de façon délibéré pour se protéger précisément contre les procédés du genre que tu veux mettre en oeuvre. Là, il n'y a pas grand-chose à faire. Désolé.
Une dernière vérification: est-ce que tu peux surligner le texte avec la souris et faire ctrl/C pour copier le texte surligné dans le presse-papier ? Je n'ai pas grand espoir, mais on ne sait jamais... | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:46 | |
| Oui, j'ai accès à chacun des mots individuels, que je peux copier ensuite. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:50 | |
| Mais tu y as accès comment ? En les surlignant ? En cliquant simplement dans un mot ou une ligne de ce cadre ? Est-ce que la ligne cliquée change de couleur lors du clic ? | |
|
| |
Pedro
Nombre de messages : 1595 Date d'inscription : 19/01/2014
| Sujet: Envoi de touches à une application. Ven 19 Mai 2017 - 14:52 | |
| J'ai accès à chacun des mots, simplement en cliquant sur le mot, et celui-ci devient noir. Je n'ai pas accès à la ligne de définition complète du mot. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème d'envoi de touches à une application. Ven 19 Mai 2017 - 14:57 | |
| Alors, clique sur un mot en envoie une capture de l'état résultant. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème d'envoi de touches à une application. | |
| |
|
| |
| Problème d'envoi de touches à une application. | |
|