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 |
|
|
| Dll permettant de gérer la souris | |
| | |
Auteur | Message |
---|
Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Dll permettant de gérer la souris Dim 15 Juil 2012 - 21:03 | |
| @ Klaus
Erstmal vielen Dank für die Hilfe. Aber ich habe noch Probleme mit der DLL. Verschiebe das auf später, hält mich nur auf beim Programmieren. Trotzdem danke.
Eventuell löst jack das mit seiner neuen Version. Severin | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 16 Juil 2012 - 0:08 | |
| @Severin: Es scheint so, dass eine Form in Panoramic NICHT auf das Mausrad reagiert ! Mache eine kleine Form und plaziere etwas unterhalb des Randes der Form. Die rechte Scrollbar erscheint. Diese kannst du mit der Maus ziehen, aber du kannst das Fenster nicht mit dem Mausrad bewegen. Beispiel: - Code:
-
dim no%, no_form% no% = no% + 1 : form no% : top no%,200 : left no%,width(0)+10 : no_form% = no% width no%,300 : height no%,180 : caption no%,"Client Area" no% = no% + 1 : alpha no% : parent no%,no_form% top no%,200 : left no%,50 : caption no%,"End of page - scroll up" no% = no% + 1 : alpha no% : parent no%,no_form% top no%,10 : left no%,50 : caption no%,"Start of page- scroll down" end Und hier ein Beispiel-Programm, das diese Form verwendet und das Mausrad simulieren sollte. Es bleibt aber leider ohne Wirkung: - Code:
-
' Test_MouseOperations.bas
' endroits spécifiques des objets à cliquer
' Windows XP: ' BUTTON: x%=left(n) y%=top(n)
' MEMO:une ligne vers le haut: x%=left(n)+width(n)-10 y%=top(n)+15 ' MEMO:une page vers le haut: x%=left(n)+width(n)-10 y%=top(n)+20 ' MEMO:une page vers le bas : x%=left(n)+width(n)-10 y%=top(n)+height(0)-20 ' MEMO:une ligne vers le bas : x%=left(n)+width(n)-10 y%=top(n)+height(0)-15 ' MEMO:molette: x%=left(n)+10 y%=top(n)+10
' COMBO:flèche:: x%=left(n)+width(n)-10 y%=top(n)+15
' OPTION:cocher:: x%=left(n) y%=top(n)
' CHECK:cocher:: x%=left(n) y%=top(n)
label labels : gosub labels gosub constantes gosub variables gosub donnees gosub form0 gosub menu gosub GUI gosub initialisations
end
labels: label constantes, variables, donnees label form0, menu, GUI, initialisations label form_s_up, form_s_down
return
constantes: dim dll$ : dll$ = "MouseOperations.dll" dim M1% : M1% = 0 - 1 return variables: dim no%, no1%, no2%, i%, x0%, y0% dim no_form% dim no_b_sup%, no_b_sdown%
return
donnees: return
form0: caption 0,"Test MouseOperations" width 0,900 : height 0,600 return
menu: return
GUI: no% = no% + 1 : button no% : top no%,40 : left no%,520 : width no%,150 caption no%,"Form scroll UP" : on_click no%,form_s_up : no_b_sup% = no% no% = no% + 1 : button no% : top no%,40 : left no%,690 : width no%,150 caption no%,"Form scroll DOWN" : on_click no%,form_s_down : no_b_sdown% = no%
no% = no% + 1 : form no% : top no%,200 : left no%,width(0)+10 : no_form% = no% width no%,300 : height no%,180 : caption no%,"Client Area" no% = no% + 1 : alpha no% : parent no%,no_form% top no%,200 : left no%,50 : caption no%,"End of page - scroll up" no% = no% + 1 : alpha no% : parent no%,no_form% top no%,10 : left no%,50 : caption no%,"Start of page- scroll down"
return
initialisations: return
form_s_up: ' required lines for mouse wheel operation dll_on dll$ x0% = 0 y0% = 0 set_focus no_form% i% = dll_call3("MouseWheel",x0%, y0%, 1) dll_off ' lines for test program set_focus 0 dll_on dll$ x0% = left(no_b_sup%) y0% = top(no_b_sup%) i% = dll_call2("MousePosition",x0%, y0%) dll_off return
form_s_down: ' required lines for mouse wheel operation dll_on dll$ x0% = 0 y0% = 0 set_focus no_form% i% = dll_call3("MouseWheel",x0%, y0%, M1%) dll_off ' lines for test program set_focus 0 dll_on dll$ x0% = left(no_b_sdown%) y0% = top(no_b_sdown%) i% = dll_call2("MousePosition",x0%, y0%) dll_off return
Ich werde versuchen, diesem Problem auf den Grund zu gehen, und werde es eventuell Jack vorlegen. | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Dll permettant de gérer la souris Lun 16 Juil 2012 - 2:28 | |
| @ Klaus
hatte mir schon sowas gedacht. Panoramic steckt voller Überaschungen. Leider hat Jack alle unsere Fragen noch nicht beantwortet.
Wie maximale Grösse von Objekten und viles mehr. Schade !! Es wäre schön wenn Jack ein wenig gesprächiger wäre.
So das wars erstmal. Ich gehe jetzt wieder auf Dienstreise.
Severin | |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Dll permettant de gérer la souris Lun 20 Aoû 2012 - 1:22 | |
| @Klaus Ich bin am Ende. Wie bekomme ich das Mausrad auf den Bar. Seit 2 Tagen probiere ich. Hier der Code: - Code:
-
' *** SCROLL BAR wenn nur VERTICAL ********************************************* BAR_VERTICAL_VE: no% = no% + 1 scroll_bar no% scroll_bar_vertical%(n_client_area%) = no% parent no%,client_area%(n_client_area%) vertical no% top no%,0 left no%,SCREEN_X-30 height no%,SCREEN_Y-177 min no%,0 max no%, max_height% - height(client_area%(n_client_area%)) :' -20 on_change no%,scroll_vertical ' ' Gosub Mausrad ' RETURN
' *** DLL für Maus ************************************************************* Mausrad:
dll_on DATEIDLL004$
' x0% = left(no_memo%) + 10 x0% = left ,SCREEN_X-30
' y0% = top(no_memo%) + 10 y0% = top no%,0
i% = dll_call3("MouseWheel",x0%, y0%, M1%) : ' M1%)
x0% = left(no_b_sdown%)
y0% = top(no_b_sdown%)
i% = dll_call2("MousePosition",x0%, y0%)
dll_off
return Was ist M1% ? Danke Severin | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 20 Aoû 2012 - 9:23 | |
| 1. Dein Kode ist richtig. 2. SCROLL_BAR reagiert NICHT aufs Maus-Rad. Versuche, manuell das Mausrad zu verwenden: - Code:
-
scroll_bar 1 : vertical 1
es geht nicht ! Also kann es auch die MouseWheel-Funktion nicht erreichen. 3. M1% steht für "-1". Ich bin gewohnt, negative Konstanten so zu definieren, da Panoramic nicht das alleinstehende Minuszeichen kennt: - Code:
-
dim M1% : M1% = 0 - 1 | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 18:30 | |
| Bonjour Klaus. Je suis en train de faire les essais du déplacement de l'ascenseur de la fenêtre pour inclure par la suite la routine de fonction d'ancre dans la fenêtre. Le principe je l'ai trouvé, et je pense que cela devrait marcher. Je fais seulement les essais, vu que pour l'instant je n'ai inplémenté que l'objet memo, car il y avait beaucoup de choses à mettre au point, et avec pleins de bugs de toutes sortes. Les bugs, fini! Mais c'est avec des alphas que je ferais les ancres. J'ai vraiment eu du mal à faire ceci, car une chose que tu n'as pas dite: il faut à chaque fois lancer la DLL, et la fermer une fois l'opération réalisée. Quel est le problème? Est-ce qu'il y a une raison évidente de fermer la dll? Pour l'instant je n'ai fais l'essai qu'avec MouseOperation, mais si je me sers de KGF, est-ce vraiment une bonne idée. Si je clique en bas pour scroller l'écran, le clic suivant me met tout en bas dans l'horloge. 2ème point: tu as une fonction teste pour recevoir les messages de dimensions. Mais on obtient ceux-ci par un message, et cela est incompatible avec un programme qu'on poste. Le message est pour la mise au point de ta dll, je pense. La question qui est sans réponse pour moi: est-ce qu'une fenêtre avec la même résolution, a les mêmes valeurs, selon qu'on est sous XP, Vista, W7 ou autre. Si oui, la question est sans valeur, mais si il y a des différences, il faut pouvoir les intégrer aux programme. A toi de voir! |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 18:52 | |
| Tu n'as pas besoin de décharger la DLL après chaque opération, puis de la recharger avant une une autre opération. Dans certains cas, c'est même impossible, comme au niveau de la gersion de l'imprimante (anciennement print.dll) au au niveau de la gestion des images dès l'instant qu'on utilise l'image interne qui est justement mémorisée dans la DLL.
Tu peux charger la DLL tout au début, juste avant le premier END par exemple, et tu la laisses ouverte et tu peux utiliser toutes les fonctions.
En ce qui concerne les fonctions de gestion de la souris, elles devraient être indépendantes du système. Les coordonnées relatives sont les coordonnées par rapport à l'objet dont le handle a été passé en paramètre (une form en général) et se rapportent à ce que Windows appelle la "client area", c'est-à-dire la zone utile entre (0,0) et (width(n),height(n)) si n est le numéro de la form. Les coordonnées absolues sont les adresses par rapport aux pixels directement sur l'écran, indépendamment de toute fenêtre. Il n'y a aucun rapport avec une version de Windows.
Je ne vois pas bien de quelle fonction de teste tu veux parler. Peux-tu me donner la référence exacte ?
| |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 19:22 | |
| Je suis désolé, mais j'ai passé hier bien 2 heures pour faire marcher. Avec Pagiciel, ça ne marche pas. J'ai décodé ton programme, et retirant tout ce qui n'avait pas de rapport avec le clic sur le bas de l'ascenseur. Il n'y avait pas de différence entre le programme d'essai et Pagiciel. Chaque fois je me retrouvais sous l'horloge mais en ne fermant pas la dll. J'ai eu l'idée de faire pareil, et de fermer à chaque fois, et là, ça fonctionne parfaitement. Il y a quelque chose que tu n'as pas du voir. Si il le faut je mettrais Pagiciel en ligne, mais j'aurai voulu faire un minimum d'explication avec. En fin de compte je viens de modifier ton programme pour n'avoir qu'un appel de dll, et vois: Dans le menu, il y a un clic pour asenceur, de façon à pouvoir cliquer en étant plus bas. Le premier coup c'est bon. Tous les autres coups, on est en dehors de la fenêtre. - Code:
-
' Test_MouseOperations.bas
' endroits spécifiques des objets à cliquer
' Windows XP: ' BUTTON: x%=left(n) y%=top(n)
' MEMO:une ligne vers le haut: x%=left(n)+width(n)-10 y%=top(n)+15 ' MEMO:une page vers le haut: x%=left(n)+width(n)-10 y%=top(n)+20 ' MEMO:une page vers le bas : x%=left(n)+width(n)-10 y%=top(n)+height(0)-20 ' MEMO:une ligne vers le bas : x%=left(n)+width(n)-10 y%=top(n)+height(0)-15 ' MEMO:molette: x%=left(n)+10 y%=top(n)+10
' COMBO:flèche:: x%=left(n)+width(n)-10 y%=top(n)+15
' OPTION:cocher:: x%=left(n) y%=top(n)
' CHECK:cocher:: x%=left(n) y%=top(n)
label labels : gosub labels gosub constantes gosub variables
gosub form0
gosub GUI
end
labels: label constantes, variables label form0, GUI label cible_G, clic_gauche, memo_up, memo_down, memo_context label memo_s_up, memo_s_down label combo_up, option_clic, check_clic label test label clic_down_zero label fin return
constantes: dim dll$ : dll$ = "E:\COURS_Pano\DLLs\MouseOperations.dll" dim M1% : M1% = 0 - 1 return variables: dim no%, no1%, no2%, i%, x0%, y0% ,dll% dim no_cible%, no_memo%, no_b_gauche%, no_b_up%, no_b_down%, no_b_right% dim no_b_sup%, no_b_sdown% dim no_b_combo%, no_combo%, no_check%, no_option%, no_b_check%, no_b_option% return
form0: caption 0,"Test MouseOperations" width 0,900 : height 0,600 :full_space 0 return
' ============================================================================== GUI:
' check 14 : top 14,130 : left 14,530 ' width 14,150 : caption 14,"Check"
' option 15 : top 15,160 : left 15,530 ' width 15,60 : caption 15,"Option 1"
' option 16 : top 16,160 : left 16,600 ' width 16,60 : caption 16,"Option 2"
' ========= button 2 : top 2,40 : left 2,10 : width 2,150 caption 2,"Mémo UP" : on_click 2,memo_up button 3 : top 3,40 : left 3,180 : width 3,150 caption 3,"Mémo DOWN" : on_click 3,memo_down
button 4 : top 4,40 : left 4,350 : width 4,150 caption 4,"Mémo Context" : on_click 4,memo_context
button 5 : top 5,40 : left 5,520 : width 5,150 caption 5,"Mémo scroll UP" : on_click 5,memo_s_up
no% = no% + 1 : button 6 : top 6,40 : left 6,690 : width 6,150 caption 6,"Mémo scroll DOWN" : on_click 6,memo_s_down
button 7 : top 7,70 : left 7,10 : width 7,150 caption 7,"Test" : on_click 7,test button 8 : top 8,100 : left 8,10 : width 8,150 caption 8,"Combo flèche" : on_click 8,combo_up
' button 9 : top 9,100 : left 9,180 : width 9,150 ' caption 9,"Check" : on_click 9,check_clic
' button 10 : top 10,100 : left 10,350 : width 10,150 ' caption 10,"Option" : on_click 10,option_clic ' ========= button 1 : top 1,10 : left 1,10 : width 1,150 caption 1,"Test clic sur Cible" on_click 1,clic_gauche ' ========= button 11 : top 11,200 : left 11,200 width 11,200 : height 11,100 : caption 11,"Cible" on_click 11,cible_G ' ========= rajouté picture 17:left 17,width(0)-50:width 17,20 :height 17,height(0) +1020 :color 17,255,255,0
main_menu 19:sub_menu 20:parent 20,19:caption 20,"teste clic" sub_menu 18 :parent 18,20:caption 18,"ascenseur" on_click 18,clic_down_zero sub_menu 21:parent 21,20:caption 21,"quitte":on_click 21,fin ' ========= memo 12 : top 12,300 : left 12,530 width 12,150 : height 12,100 : bar_vertical 12 for i%=1 to 30 item_add 12,"Ligne "+str$(i%) next i% ' ========== combo 13 : top 13,100 : left 13,530 width 13,150 : height 13,100 for i%=1 to 30 item_add 13,"Ligne "+str$(i%) next i% return ' ============================================================================== clic_down_zero: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(0) + width(0)-20 y0% = top(0) + height(0)-90 : ' 15=par ligne 20=par page ' i% = dll_call0("Test") i% = dll_call2("MouseLeftClick",x0%, y0%) :' clic gauche ' x0% = left(0) ' y0% = top(0) ' i% = dll_call2("MousePosition",x0%, y0%) :' place en x,y ' dll_off return ' ============================================================================== memo_up: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(12) + width(12)-10 :' 12=memo y0% = top(12) + 20 : ' 15=par ligne 20=par page i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(2) y0% = top(2) ' i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return ' ============================================================================== memo_down: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(12) + width(12)-10 y0% = top(12) + height(12)-20 : ' 15=par ligne 20=par page i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(3) y0% = top(3) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return
memo_context: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(12) + width(12)-4 y0% = top(12) + 4 i% = dll_call2("MouseRightClick",x0%, y0%) ' dll_off return ' ============================================================================== memo_s_up: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(12) + 10 y0% = top(12) + 10 i% = dll_call3("MouseWheel",x0%, y0%, 1) x0% = left(5) y0% = top(5) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return ' ============================================================================== memo_s_down: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(12) + 10 y0% = top(12) + 10 i% = dll_call3("MouseWheel",x0%, y0%, M1%) : ' M1%) x0% = left(6) y0% = top(6) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return ' ==============================================================================
cible_G: message "clic gauche sur bouton" return
clic_gauche: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(11) y0% = top(11) i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(1) y0% = top(1) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return
test: if dll%=0 then dll_on dll$ :dll%=1 i% = dll_call0("Test") i% = dll_call0("Test1") ' dll_off return
combo_up: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(13) + width(12)-10 y0% = top(13) + 15 i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(8) y0% = top(8) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return
check_clic: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(14) y0% = top(14) i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(9) y0% = top(9) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return
option_clic: if dll%=0 then dll_on dll$ :dll%=1 x0% = left(15) y0% = top(15) i% = dll_call2("MouseLeftClick",x0%, y0%) x0% = left(10) y0% = top(10) i% = dll_call2("MousePosition",x0%, y0%) ' dll_off return
fin: dll_off terminate
Excuses moi d'avoir mis des n° à la place des noms, mais n'étant pas dans le programme je n'arrivais pas à comprendre. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 20:08 | |
| Merci, Cosmos70, pour ce diagnostic très précis. Il y avait effectivement un bug au niveau du positionnement du curseur (une variable interne n'était pas remise à zéro).
La dll est mise à jour dans le WebDav - version V1.38 pour la correction du bug.
En ce qui concerne le bouton Test, en effet c'est un résidu de mes tests internes, et la fonction correspondante n'est plus accessible dans la DLL. Pardon pour l'oubli.
| |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 20:40 | |
| Merci Klaus. Je téléchargerai tout à l'heure. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Mer 29 Aoû 2012 - 21:00 | |
| N'oublie pas: c'est KGF.dll, pas MouseOperations.dll qui n'est plus maintenue ! | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 15:49 | |
| Klaus, avant de te répondre sur l'autre post, je voulais faire un essai, mais il y a un problème avec ta dll concernant le clic, et la position. Avec Absolute, la souris reste au coin en haut à gauche. Je voulais incorporer un code en AutoIt ensuite, mais tant qu'il y a cette erreur, je ne peux rien faire. - Code:
-
' laisser 10 lignes ' left 0,500:top 0,300 :' une fois que cela marche, enlever l'aspostrophe. dim dll$ , i%, x0%, y0% x0%=20:y0%=200
dll$ = "E:\COURS_Pano\Dlls\KGF.dll"
dll_on dll$ wait 200 i%=dll_call2("AbsoluteMousePosition",x0%,y0%) i%=dll_call2("AbsoluteMouseLeftClick",x0%,y0%) ' teste ensuite d'envoi de caractères à partir d'un programme autoit dll_off |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 17:18 | |
| @Cosmos70: J'ai fait une correction. Regarde si cela correspond à ce que tu souhaites. | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 18:23 | |
| Je viens de la télécharger. Je ne vois aucun changement. Toujours en haut à gauche. EDIT: c'est KGF que j'ai téléchargé. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 19:08 | |
| Chez moi, le curseur de place à environ 1 cm de gauche et 10 cm du haut, ce qui semble normal. Réessaie... | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 19:39 | |
| Ok c'est bon. En fait j'ai un dossier E:\Dlls, et celui qui est dans le programme plus haut. Le premier je ne me souvenais pas qu'il existait.
Au fonctionnement du programme, avec l'éditeur Panoramic placé en 0,0, je me retrouve en ligne 7. Cette fois ça marche. Merci. |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 19:52 | |
| Donc je reprend mon exemple, et avec un programme AutoIt d'une ligne compilé: - Code:
-
Send("rem ceci est un envoi depuis AutoIt")
Avec le programme Panoramic et ta dll: - Code:
-
' laisser 10 lignes left 0,500:top 0,300 dim dll$ , i%, x0%, y0% x0%=20:y0%=200
dll$ = "E:\COURS_Pano\Dlls\KGF.dll"
dll_on dll$ wait 200 i%=dll_call2("AbsoluteMousePosition",x0%,y0%) i%=dll_call2("AbsoluteMouseLeftClick",x0%,y0%) ' i%=dll_call2("MousePosition",x0%,y0%) dll_off ' panoramic@klausgunther ' panoramic123 execute "z:\envoi_clavier.exe"
et le programme autoIt: envoi_clavier.exe Voir le Fichier : envoi_clavier.exeSi tu fais l'essai en mettant les bons chemins, il me rajoute en ligne 8 sur l'éditeur: "rem ceci est un envoi depuis AutoIt". Si ça ne marche pas avec Panoramic, c'est que Jack a utilisé une autre conception pour faire Panoramic. Pour info: AutoIt est language de script. Édit: je n'ai pas fait gaffe, je suis repartie ici sur la gestion de la souris. Quoiqu'on ait débordé sur le poste Nardo, et avec toutes mes excuses. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 20:48 | |
| Voici ce que ça donne chez moi (j'ai seulement adapté les chemins d'accès aux fichiers): Cela me semble bon, non ? | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 21:30 | |
| Donc cela me donne en partie raison. Je ne connais pas le handle de l'éditeur Panoramic. J'ai juste avec la dll cliqué sur l'éditeur, et les touches du clavier vont directement sur le foreground actuel. Quand au n° de ligne, tout dépend des paramètres écran et taille de la police.
Maintenant est-ce que tu peux avoir le même résultat, là je ne peux pas répondre. Rien ne dit que Panoramic travaille comme AutoIt. |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 3 Sep 2012 - 22:31 | |
| @ Klaus, une petite parenthèse... ClickSetLink peut il être associé à un picture, pour savoir si la souris est dedans ? edit : grrrrr...j'ai encore écrit une c...., pas de handle sur picture...
Dernière édition par ygeronimi le Lun 3 Sep 2012 - 23:06, édité 1 fois | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 22:53 | |
| @Klaus. Dans le cas où tu arrive à simuler le clavier, il serait aussi bon de prévoir l'appui simultané sur les touches ALT CTRL WINDOW ou autre. Avec WINDOWS TAB, on peut ainsi passer d'un programme à un autre sans avoir besoin du handle. Pour info, je mets l'aide donnée à SEND() d'AutoIt. Je viens d'ouvrir un compte pour WebDAW. malheureusement à chaque fois QtWeb plante à l'envoi d'un fichier. Aussi je mets l'exemple ici: - Spoiler:
- Citation :
Send Sends simulated keystrokes to the active window.
Send ( "keys" [, flag] )
Parameters keys The sequence of keys to send. flag [optional] Changes how "keys" is processed: flag = 0 (default), Text contains special characters like + and ! to indicate SHIFT and ALT key-presses. flag = 1, keys are sent raw.
Return Value None.
Remarks See the Appendix for some tips on using Send. AutoIt can send all ASCII and Extended ASCII characters (0-255), to send UNICODE characters you must use the "ASC" option and the code of the character you wish to send (see {ASC} at the bottom of the table below).
The "Send" command syntax is similar to that of ScriptIt and the Visual Basic "SendKeys" command. Characters are sent as written with the exception of the following characters:
'!' This tells AutoIt to send an ALT keystroke, therefore Send("This is text!a") would send the keys "This is text" and then press "ALT+a".
N.B. Some programs are very choosy about capital letters and ALT keys, i.e. "!A" is different to "!a". The first says ALT+SHIFT+A, the second is ALT+a. If in doubt, use lowercase!
'+' This tells AutoIt to send a SHIFT keystroke, therefore Send("Hell+o") would send the text "HellO". Send("!+a") would send "ALT+SHIFT+a".
'^' This tells AutoIt to send a CONTROL keystroke, therefore Send("^!a") would send "CTRL+ALT+a".
N.B. Some programs are very choosy about capital letters and CTRL keys, i.e. "^A" is different from "^a". The first says CTRL+SHIFT+A, the second is CTRL+a. If in doubt, use lowercase!
'#' The hash now sends a Windows keystroke; therefore, Send("#r") would send Win+r which launches the Run dialog box.
You can set SendCapslockMode to make CAPS LOCK disabled at the start of a Send operation and restored upon completion. However, if a user is holding down the Shift key when a Send function begins, text may be sent in uppercase. One workaround is to Send("{SHIFTDOWN}{SHIFTUP}") before the other Send operations.
Certain keyboard as the Czech one send different characters when using the Shift Key or being in CAPS LOCK enabled and sending a char. Due to the send AutoIt implementation the CAPS LOCKed char will be sent as Shifted one so it will not work.
Certain special keys can be sent and should be enclosed in braces:
N.B. Windows does not allow the simulation of the "CTRL-ALT-DEL" combination! Send Command (if zero flag) Resulting Keypress {!} ! {#} # {+} + {^} ^ {{} { {}} } {SPACE} SPACE {ENTER} ENTER key on the main keyboard {ALT} ALT {BACKSPACE} or {BS} BACKSPACE {DELETE} or {DEL} DELETE {UP} Up arrow {DOWN} Down arrow {LEFT} Left arrow {RIGHT} Right arrow {HOME} HOME {END} END {ESCAPE} or {ESC} ESCAPE {INSERT} or {INS} INS {PGUP} PageUp {PGDN} PageDown {F1} - {F12} Function keys {TAB} TAB {PRINTSCREEN} Print Screen key {LWIN} Left Windows key {RWIN} Right Windows key {NUMLOCK on} NUMLOCK (on/off/toggle) {CAPSLOCK off} CAPSLOCK (on/off/toggle) {SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle) {BREAK} for Ctrl+Break processing {PAUSE} PAUSE {NUMPAD0} - {NUMPAD9} Numpad digits {NUMPADMULT} Numpad Multiply {NUMPADADD} Numpad Add {NUMPADSUB} Numpad Subtract {NUMPADDIV} Numpad Divide {NUMPADDOT} Numpad period {NUMPADENTER} Enter key on the numpad {APPSKEY} Windows App key {LALT} Left ALT key {RALT} Right ALT key {LCTRL} Left CTRL key {RCTRL} Right CTRL key {LSHIFT} Left Shift key {RSHIFT} Right Shift key {SLEEP} Computer SLEEP key {ALTDOWN} Holds the ALT key down until {ALTUP} is sent {SHIFTDOWN} Holds the SHIFT key down until {SHIFTUP} is sent {CTRLDOWN} Holds the CTRL key down until {CTRLUP} is sent {LWINDOWN} Holds the left Windows key down until {LWINUP} is sent {RWINDOWN} Holds the right Windows key down until {RWINUP} is sent {ASC nnnn} Send the ALT+nnnn key combination {BROWSER_BACK} 2000/XP Only: Select the browser "back" button {BROWSER_FORWARD} 2000/XP Only: Select the browser "forward" button {BROWSER_REFRESH} 2000/XP Only: Select the browser "refresh" button {BROWSER_STOP} 2000/XP Only: Select the browser "stop" button {BROWSER_SEARCH} 2000/XP Only: Select the browser "search" button {BROWSER_FAVORITES} 2000/XP Only: Select the browser "favorites" button {BROWSER_HOME} 2000/XP Only: Launch the browser and go to the home page {VOLUME_MUTE} 2000/XP Only: Mute the volume {VOLUME_DOWN} 2000/XP Only: Reduce the volume {VOLUME_UP} 2000/XP Only: Increase the volume {MEDIA_NEXT} 2000/XP Only: Select next track in media player {MEDIA_PREV} 2000/XP Only: Select previous track in media player {MEDIA_STOP} 2000/XP Only: Stop media player {MEDIA_PLAY_PAUSE} 2000/XP Only: Play/pause media player {LAUNCH_MAIL} 2000/XP Only: Launch the email application {LAUNCH_MEDIA} 2000/XP Only: Launch media player {LAUNCH_APP1} 2000/XP Only: Launch user app1 {LAUNCH_APP2} 2000/XP Only: Launch user app2
To send the ASCII value A (same as pressing ALT+065 on the numeric keypad) Send("{ASC 065}")
(When using 2 digit ASCII codes you must use a leading 0, otherwise an obsolete 437 code page is used).
To send UNICODE characters enter the character code (decimal or hex), for example this sends a Chinese character Send("{ASC 2709}") or Send("{ASC 0xA95}")
Single keys can also be repeated, e.g. Send("{DEL 4}") ;Presses the DEL key 4 times Send("{S 30}") ;Sends 30 'S' characters Send("+{TAB 4}") ;Presses SHIFT+TAB 4 times
The key will be send at least once even if the count is zero.
To hold a key down Send("{a down}") ;Holds the A key down Send("{a up}") ;Releases the A key
To set the state of the capslock, numlock and scrolllock keys Send("{NumLock on}") ;Turns the NumLock key on Send("{CapsLock off}") ;Turns the CapsLock key off Send("{ScrollLock toggle}") ;Toggles the state of ScrollLock
If you wish to use a variable for the count, try $n = 4 Send("+{TAB " & $n & "}")
If you wish to send the ASCII value A four times, then try $x = Chr(65) Send("{" & $x & " 4}")
Most laptop computer keyboards have a special Fn key. This key cannot be simulated.
Note, by setting the flag parameter to 1 the above "special" processing will be disabled. This is useful when you want to send some text copied from a variable and you want the text sent exactly as written.
For example, open Folder Options (in the control panel) and try the following: Send("{TAB}") Navigate to next control (button, checkbox, etc) Send("+{TAB}") Navigate to previous control. Send("^{TAB}") Navigate to next WindowTab (on a Tabbed dialog window) Send("^+{TAB}") Navigate to previous WindowTab. Send("{SPACE}") Can be used to toggle a checkbox or click a button. Send("{+}") Usually checks a checkbox (if it's a "real" checkbox.) Send("{-}") Usually unchecks a checkbox. Send("{NumPadMult}") Recursively expands folders in a SysTreeView32.
Use Alt-key combos to access menu items. Also, open Notepad and try the following: Send("!f") Send Alt+f, the access key for Notepad's file menu. Try other letters!
Send("{DOWN}") Move down a menu. Send("{UP}") Move up a menu. Send("{LEFT}") Move leftward to new menu or expand a submenu. Send("{RIGHT}") Move rightward to new menu or collapse a submenu. See Windows' Help--press Win+F1--for a complete list of keyboard shortcuts if you don't know the importance of Alt+F4, PrintScreen, Ctrl+C, and so on.
When running a script on a remote computer through a program as psexec (www.sysinternals.com) or beyondexec (www.beyondlogic.org) it is necessary, specially when sending strokes to a program launch by the script with a Run function, to use ControlSend or other ControlXXX functions to directly communicate with the control. Send even with Opt("SendAttachMode",1) is not working. Using the -s mode when submitting can help to have better right on the remote computer.
Opt("SendKeyDelay",...) alters the the length of the brief pause in between sent keystrokes. Opt("SendKeyDownDelay",...) alters the length of time a key is held down before being released during a keystroke. Set both "SendKeyDelay" and "SendKeyDownDelay" to 0 to remove all delays when sending keystrokes. This may be required under certain circumstances, for example, when locking the system ("#l") it may be necessary to remove the delays in order to prevent the WIN key from being stuck down.
Related SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), ControlSend, BlockInput, HotKeySet, WinMenuSelectItem Example
Send("#r") WinWaitActive("Run") Send("notepad.exe{Enter}") WinWaitActive("[CLASS:Notepad]") Send("Today's time/date is {F5}")
Au cas où? Moi je m'en fout, j'en A...t pour le faire |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Lun 3 Sep 2012 - 23:27 | |
| Effectivement, Cosmos70. Mes fonctions permettent d'envoyer n'importe quelle touche, y compris Entrée, les flèches, les touches F1, F2, ... la touche TAB, ... et chacune de ces touches peut être affectée ou non de n'importe quelle combinaison de shift, control et alt. Je peux même envoyer uniquement une touche shift, control ou alt...
Et pour YGeronimi, je précise l'utilisation de l'interception de clics de souris Il y a deux fonctions pour mettre le mécanisme au point: 1. ClickSetHook déclare l'interception des clics et autres évènements de souris pour un objet dont on fournit le handle. Donc, pour cette raison, un picture ne peut pas être géré de cette manière. Cette routine donne aussi le lien vers un objet edit recevant les coordonnées précises du clic. 2. ClickSetLink lie un évènement souris à un objet bouton de Panoramic, dont l'évènement on_click sera déclenché comme si la souris avait agi sur ce bouton.
Ces deux fonctions ont une action complémentaire. La première permet d'intercepter l'action de la souris et de récupérer les coordonnées, et la seconde permet d'être averti par un évènement Panoamic qu'un tel évènement souris a eu lieu - peut-être dans une autre form, cela n'a pas d'importance.
Malheureusement, les objets PICTURE et ALPHA n'ont pas de handle car ce ne sont pas des contrôles fenêtrées dans le sens de Windows. Ces objets sont dessinés de façon interne par la form qui les contient, et c'est beaucoup plus compliqué d'y intervenir. | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Jeu 6 Sep 2012 - 21:43 | |
| J'ai un problème avec Pagiciel, et je ne vois pas d'où cela vient. Lorsque je me serts de la molette, celui-ci me fait un scroll sur un list, donc execute les items. Ne pourrais-tu faire une fonction qui désactive et active le scroll de la molette? Merci. Il doir y avoir une inter-action avec le timer. J'ai désactivé pratiquement tous les début de sous-programme, pour les réactiver à la fin, si c'est souhaitable, mais je ne vois quoi faire de plus.
Il y a peu de temps Jack nous a dit qu'il avait revu les return pour les limiter à mille. Je ne sais pas s'il y a un rapport, mais j'ai constaté que ce problème de: pas de repeat dans les messages d'erreurs, est maintenant monnaie courante. Je suis certain de ne pas les dépasser. Je ne sais pas comment cela est pour vous dans vos programmes, je me demande si il n'y a pas un bug qui a été fait. J'ai revu tous les appels, et sont même listés, et visible à la demande. mais.... |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Dll permettant de gérer la souris Jeu 6 Sep 2012 - 22:27 | |
| Regarde ceci: - Code:
-
list 1 dim i% for i%=1 to 100 item_add 1,str$(i%) next i% end
Si tu ne cliques PAS dans la liste, même si le curseur est dessus, la molette n'a aucune action sur la liste. Maintenant, tu cliques dedans - la ligne cliquée se mettra en bleu. En utilisant la molette, tu verras effectivement un scroll, mais la ligne bleue n'a PAS été déplacée ! Il n'y a donc pas d'autre sélection dans la liste. Ceci est le fonctionnement normal de Windows. Je ne vois pas ce qu'on pourrait y faire, ni ce que ce comportement pourrait avoir de gênant. cela change simplement la visualisation de la liste, et non la sélection de la ligne active. | |
| | | Invité Invité
| Sujet: Re: Dll permettant de gérer la souris Jeu 6 Sep 2012 - 22:51 | |
| Le problème est que réellement je ne suis pas sur la liste, d'ailleurs mon programme le cache, pour montrer la feuille complète, et c'est en me rapprochant du bord gauche à 10 pixels que le list se montre pour choisir une autre feuille. De plus j'ai mis aux appels de cette list, un set_focus 0. On dirait que le timer ramène le focus sur cette liste. Tant que je ne me sert pas de la molette, il n'y a pas de problème, non plus si je suis sur un memo en me servant de la molette. Peut-être, je vais essayer, envoyer un clic sur la forme 0. Il manque peut-être ce clic? Merci quand-même. |
| | | Contenu sponsorisé
| Sujet: Re: Dll permettant de gérer la souris | |
| |
| | | | Dll permettant de gérer la souris | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |