Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Click sur un objet externe a Panoramic | |
| | |
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Click sur un objet externe a Panoramic Lun 20 Oct 2014 - 21:55 | |
| Bonsoir a tous !
Voila une demande particulière qui s'adresse peut être plutôt a Klaus...
je pars d'un exemple : un tableau EXCEL ou tout autre feuille de données externe a panoramic. Et je voudrai copier certains champs de ce tableau dans des memos de panoramic par exemple.
Il s'agit bien d'un exemple et je souhaite le faire par ce procédé et non par la gestion des fichiers.
J'utilise actuellement un script ACTIONAZ pour ceux qui connaissent qui me permet d'automatiser cette tache.
La question et de savoir comment mettre en œuvre cette possibilité avec KGF.
J'ai déjà découvert toutes les fonctions concernant la souris et les handles mais je ne vois pas comment simuler un click sur la feuille EXCEL avec retour panoramic. Une sorte de ON_CLICK mais pour des objets externe a panoramic .
Pour l'instant, dans KGF je n'ai que la possibilité de positionner la souris sur un endroit précis et c'est tout.
J'avoue être un peu perdu dans la mise en œuvre des fonctions KGF. Je ne sais pas si c'est assez clair pour vous ??
Quelqu'un a t il une idée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Lun 20 Oct 2014 - 22:23 | |
| S'il s'agit d'Excel - as-tu regardé les fonctions de gestion Excel de KGF.dll ? Ca va assez loin. Tu peux choisir le classeur, la feuille, la ou les cellules, lire et/ou écrire les données et/ou les formules... Beaucoup de choses sont possibles ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Lun 20 Oct 2014 - 22:55 | |
| Non pas forcément, c'est le principe qui m'intéresse . C'est pourquoi j'ai écrit cela : - Citation :
- Il s'agit bien d'un exemple et je souhaite le faire par ce procédé et non par la gestion des fichiers.
Mais je suis peut etre suer le point de trouver... N'y a t il pas moyen Klaus de rajouter une fonction KGF qui permet la détection du click sur des objets autres que panoramic avec identification par le handle par exemple. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Lun 20 Oct 2014 - 23:37 | |
| Oui, mais précisément pas avec Excel. Par contre, pour la majeure partie des programmes, ce sera possible. Le problème réside essentiellement dans l'identification de l'objet à gérer.
En effet, on peut obtenir facilement le handle de la fenêtre principale d'un autre programme. Mais cela ne sert pas à grand-chose, dans ce contexte. On peut aussi trouver l'identifiant du processus. Déjà plus intéressant, car cela permet d'avoir accès à toutes l'arborescence des objets Windows de l'autre programme. Et je dis bien "objets Windows", car les objets non fenêtrées (comme des labels ou des images) n'ont pas de handle Windows !
Mais même ayant à disposition la liste complète des handles (et également des noms et types) des objets d'un autre processus, encore faut-il identifier exactement l'objet avec lequel on veut interagir. Certes, il est relativement aisé d'obtenir l'identification de l'objet qui se trouve sous le curseur. Egalement celui qui a le focus. Mais est-ce que ce sera la solution dans tous les cas ? J'en doute.
Donc, techniquement, j'ai beaucoup de moyens. Mais la question essentielle reste comment déterminer avec quel objet interagir. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Mar 21 Oct 2014 - 9:34 | |
| Bonjour et merci pour tes explication Klaus,
En fait je souhaite récupérer des infos stockées dans les champs d'une page de saisie d'un logiciel. Je n'ai pas accès a la base de données du dit fichier et la meilleur solution (si cela est possible) est pour moi de faire localiser le champs par un clic de panoramic sur cet objet puis grâce aux fonctions de positionnement x et y et clics de la souris et du clipboard, de récupérer les données des champs.
Pour l'instant je peux localiser la souris sur l'écran par panoramic mais je ne peux effectué ce clic. J'ai essayé de remplacer le clic par l'appuie d'une touche grâce a inkey$ mais cela ne fonctionne pas correctement.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Mar 21 Oct 2014 - 10:10 | |
| Tu peux utiliser - Code:
-
res% = dll_call2("AbsoluteMouseLeftClick",x%,y%)
pour effectuer un positionnement absolu du cursur en (x%,y%) et y effectuer un clic gauche. Ensuite, tu utilises - Code:
-
hnd% = dll_call0("GetActiveControl")
pour avoir le handle de cet objet, si c'est un objet Windows. Et finalement, tu peux utiliser - Code:
-
res% = dll_call5("SendSingleKey",hnd%,VK%,ctrl%,alt%,shift%)
pour y envoyer un ctrl/A suivi d'un ctrl/C: - Code:
-
res% = dll_call5("SendSingleKey",hnd%,65,1,0,0) res% = dll_call5("SendSingleKey",hnd%,67,1,0,0)
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Mar 21 Oct 2014 - 12:57 | |
| Merci Klaus,
Je testerai ce soir... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Mer 22 Oct 2014 - 17:41 | |
| Bonjour a tous !
@Klaus : Merci pour tes conseils.
J'ai réussi en partie a mettre en œuvre mon "COPIER COLLER" externe en panoramic.
Je suis maintenant confronté a un autre problème : c'est que le CTRL + A ne fonctionne pas dans les champs que je veux copier. Il faut que j'utilise CLICK SOURIS a gauche du champ + SHIFT + CLICK SOURIS a droite ou CLICK GLISSANT mais là je sais pas si c'est possible avec tes DLL.
Le CLICK UP ou DOWN n'étant pas reconnu avec KGF.
Quelqu'un aurait il une idée ?? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Mer 22 Oct 2014 - 18:18 | |
| Une fois que tu as fait: - Code:
-
res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) hnd% = dll_call0("GetActiveControl") tu as le handle de l'objet (si tu as bien visé). A partir de là, tu peux essayer ceci - Code:
-
dim txt$ titre$ = string$(255," ") res% = dll_call2("GetWindowTitle",hnd%,adr(txt$)) message "Le contenu est: "+trim$(txt$)
En fait, cette fonction est déstinée à retourner le titre d'une fenêtre si le handle passé en paramètre est le handle d'une fenêtre. Mais si c'est le handle d'un EDIT, par exemple, elle retournera le contenu de l'EDIT. A tenter. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Mer 22 Oct 2014 - 20:37 | |
| Merci Klaus pour tes réponses rapides...
Je tenterai ta procédure demain avec l'outil en question. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 10:57 | |
| Bonjour a tous, @Klaus : Ça se complique... La manipulation que tu ma donnée , ne me renvoi que le handle de la fenêtre principale. Je ne reçoit aucun champs. J'ai par contre modifier car je croit qu'il y avait une erreur : - Citation :
- dim txt$
txt$ = string$(255," ") res% = dll_call2("GetWindowTitle",hnd%,adr(txt$)) message "Le contenu est: "+trim$(txt$) Peux être faire un CLIC a gauche du champs + touche SHIFT ENFONCE + CLIC a droite ? Ou alors faire CLIC ENFONCE a gauche et déplacer jusqu’a la droite du champs. En sachant que dans certains cas la longueur des champs dépasse la longueur du masque. A moins qu'il y est une autre solution... PS : Le logiciel ou je dois récupéré les champs est SIEBEL. peut être que tu connais ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 11:14 | |
| Je ne connais pas ce logiciel, mais je vois la problématique. Je vais faire des recherches. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 11:19 | |
| Il s'agit d'une grosse base de donnée en ligne. L'affichage se fait dans Internet Explorer.
C'est compliqué car il y a des champs modifiables, d'autre pas... Les longueurs sont variable, voir bien au delà du masque.
Je crois que cela va être compliqué... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 12:23 | |
| Je cherche. J'avance doucement... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 14:44 | |
| Je pense que j'ai résolu le problème. Recharge la nouvelle version V3.76 de KGFdll et essaie le code suivant: - Code:
-
' test_recuperer_texte_autre_programme.bas
label touche dim txt$, res%, hnd%, x%, y%
caption 0,"Récupération de textes" on_key_down 0,touche
alpha 1 : top 1,10 :left 1,10 : caption 1,"X:" edit 11 : top 11,10 : left 11,30 : width 11,40 : inactive 11 alpha 2 : top 2,10 :left 2,100 : caption 2,"Y:" edit 12 : top 12,10 : left 12,130 : width 12,40 : inactive 12 alpha 3 : top 3,10 :left 3,200 : caption 3,"Objet:" edit 13 : top 13,10 : left 13,250 : width 13,80 : inactive 13
alpha 5 : top 5,40 : left 5,10 : caption 5,"ESC=localiser A=capture" memo 31 : top 31,70 : left 31,10 : width 31,400 : height 31,300 : bar_both 31 : inactive 31
dll_on "KGF.dll"
end
touche: if scancode=27 : ' pour localiser la zone à capter res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) hnd% = dll_call2("GetObjectUnderPosition",x%,y%) text 11,str$(x%) text 12,str$(y%) text 13,str$(hnd%) return end_if if scancode=65 : ' pour capter la zone localisée res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) pause 100 : ' laisser le temps de l'affichage res% = dll_call5("SendSingleKey",hnd%,65,1,0,0) : ' ctrl/A res% = dll_call5("SendSingleKey",hnd%,67,1,0,0) : ' ctrl/C pause 200 : ' laisser le temps de la copie clear 31 item_add 31,clipboard_string_paste$ res% = dll_call1("BringWindowToForeground",handle(0)) return end_if return
Tu lances le programme, tu le places par-dessus le programme dans lequel tu veux prendre des informations, mais de sorte que la zone à capturer reste visible. Au besoin, il faut redimensionner la form. Ensuite, il y a deux manipulations à faire: 1. identifier l'objet à capturer. Pour cela, tu places le curseur à l'intérieur de l'objet à capturer (contenu texte, bien sûr), et ceci sans cliquer ! Puis tu frappes la touche Echap (ESC). Tu verras les coordonnées et le handle s'afficher dans la form. 2. copier le contenu. Pour cela, tu frappes simplement la touche A? Tu verras le contenu de la zone identifiée s'afficher dans le mémo. Si le contenu de la zone dans l'autre programme a changé, il suffit de refaire l'étape (2), sous deux conditions: a) le programme de récupération n'a pas été arrêté b) le programme ciblé n'a pas été déplace bref, si les informations d'identification (x%, y%, handle) n'ont pas changé. Pour y arriver, j'ai simplement ajouté une nouvelle fonction à) KGF.dll qui permet de retourner le handle de l'objet se trouvant sous une adresse absolue de l'écran, quelque soit le programme. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 15:39 | |
| Merci Klaus mais comme je le disait précédemment le CTRL+A ne fonctionne pas.
D’où l'idée que j'ai faite sur le message precedent.
Désolé ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 16:13 | |
| Même manuellement, en cliquant dans la zone, un ctrl/A ne sélectionne pas le texte ? | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 16:26 | |
| Merci pour ton aide Klaus.
Un CTRL+A même manuel ne fonctionne pas.
Un double click sélectionne un mot. Un triple click ne donne rien de plus.
Les seuls possibilités seraient de laisser enfoncé SHIFT ou le click gauche de la souris. Je ne vois que ça. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 16:28 | |
| J'ai placé une variante de KGF.dll dans le WebDav, dossier DLLs. Charge-là stp et refais la manipulation. Tu auras un message affichant le type de fenêtre visée lorsque tu frappes Echap. Cela nous mettra peut-être sur une piste.
Avec Firefox, je peux ainsi récupérer l'URL, le texte de la page etc, et même le texte dans une zone de saisie, comme par exemple le critère de recherche lorsqu'on utilise la fonction Rechercher du forum.
Mais, encore une fois, il faut que ce soit un objet Windows, sinon il n'y a pas de handle !
EDIT
Si le ctrl/A manuel ne fonctionne pas, ça se complique. Mais fais ce test quand-même - on va sûrement trouver un moyen. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 17:39 | |
| Ok Klaus, je ferais cela dès demain matin car la je ne suis plus sur place. Et comme il s'agit d'une base sécurisée, je ne peux pas me loguer ailleurs...
Encore merci pour ton aide. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 18:37 | |
| J'ai fait une nouvelle version du programme de test. En phase (2), on peut maintenant frapper la touche B qui devrait provoquer le surlignage de 200 pixels vers la droite à partir de la position mémorisée, et récupérer ce texte sélectionné. Cela fonctionne avec Firefox n'importe où dans la page. Voici le nouveau code: - Code:
-
' test_recuperer_texte_autre_programme.bas
label touche dim txt$, res%, hnd%, x%, y%
caption 0,"Récupération de textes" on_key_down 0,touche
alpha 1 : top 1,10 :left 1,10 : caption 1,"X:" edit 11 : top 11,10 : left 11,30 : width 11,40 : inactive 11 alpha 2 : top 2,10 :left 2,100 : caption 2,"Y:" edit 12 : top 12,10 : left 12,130 : width 12,40 : inactive 12 alpha 3 : top 3,10 :left 3,200 : caption 3,"Objet:" edit 13 : top 13,10 : left 13,250 : width 13,80 : inactive 13
alpha 5 : top 5,40 : left 5,10 : caption 5,"ESC=localiser A=capturer B=Surligner+capturer" memo 31 : top 31,70 : left 31,10 : width 31,400 : height 31,300 : bar_both 31 : inactive 31
dll_on "KGF.dll" res% = dll_call1("DebugKGF",1) : ' supprimer cette ligne après les tests !
end
touche: if key_down_code=27 : ' pour localiser la zone à capter res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%)) hnd% = dll_call2("GetObjectUnderPosition",x%,y%) text 11,str$(x%) text 12,str$(y%) text 13,str$(hnd%) return end_if if key_down_code=65 : ' pour capter la zone localisée res% = dll_call2("AbsoluteMouseLeftClick",x%,y%) pause 100 : ' laisser le temps de l'affichage res% = dll_call5("SendSingleKey",hnd%,65,1,0,0) : ' ctrl/A res% = dll_call5("SendSingleKey",hnd%,67,1,0,0) : ' ctrl/C pause 200 : ' laisser le temps de la copie clear 31 item_add 31,clipboard_string_paste$ res% = dll_call1("BringWindowToForeground",handle(0)) return end_if if key_down_code=66 res% = dll_call2("AbsoluteMousePosition",x%,y%) pause 100 : ' laisser le temps de l'affichage res% = dll_call2("MouseHighlight",200,0) pause 100 : ' laisser le temps de l'affichage res% = dll_call5("SendSingleKey",hnd%,67,1,0,0) : ' ctrl/C pause 200 : ' laisser le temps de la copie clear 31 item_add 31,clipboard_string_paste$ res% = dll_call1("BringWindowToForeground",handle(0)) end_if return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 20:23 | |
| Bonsoir Klaus.
J'ai testé chez moi a l'instant dans des champs 'classiques'.
Effectivement je crois que tu as réussi a trouver une solution. Je te confirmerai cela demain sur SIEBEL pour être certain que ca fonctionne.
J'ai cependant un doute pour les champs plus long que le masque de saisie... Mais on verra demain.
Je te remercie. très sincèrement sans toi je n'avais pas la solution en PANORAMIC. Il me fallait faire des script avec ACTIONAZ et ensuite les lancer en ligne de commande avec PANORAMIC. Toute une histoire, quoi !
A demain pour la suite... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Jeu 23 Oct 2014 - 20:41 | |
| Content d'avoir fait avancer le schmilblick ! La ligne 47 du code ci-dessus donne la longueur (en pixels) à surligner. Tu peux varier cette valeur, pour vérifier que tout est bien surligné. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Click sur un objet externe a Panoramic Ven 24 Oct 2014 - 9:31 | |
| Bonjour a tous ! @Klaus : Les nouvelles ne sont pas bonnes ! la dernière version de KGF ne nous permet pas de récupérer les données. J'ai vérifié avec le test, j'ai le message suivant : - Citation :
- ClassName : RAIL_WINDOW
Cela concerne a priori tous les champs. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Click sur un objet externe a Panoramic Ven 24 Oct 2014 - 9:44 | |
| Bien. C'est donc un type de fenêtre propriétaire. Comment réagit la fenêtre ? Est-ce que ça surligne du texte, au moins partiellement ? Décris-moi un peu plus précisément ce ui se passe... | |
| | | Contenu sponsorisé
| Sujet: Re: Click sur un objet externe a Panoramic | |
| |
| | | | Click sur un objet externe a Panoramic | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |