| [RESOLU] fonction de récupération molette souris | |
|
|
Auteur | Message |
---|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: [RESOLU] fonction de récupération molette souris Sam 8 Aoû 2020 - 12:50 | |
| Bonjour à tous ! Je souhaiterai avoir un retour dans Panoramic lorsque la molette de la souris est utilisée. Avant - arrière - clic ... Je ne crois pas que Jack a codé quoi que ce soit à ce sujet. Quelqu'un a une idée ? PS : Klaus crois tu que ça serai possible de faire ça dans la dll KGF ? Merci d'avance pour vos réponses.
Dernière édition par Minibug le Mar 11 Aoû 2020 - 12:25, édité 2 fois | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Dim 9 Aoû 2020 - 11:44 | |
| Bonjour à tous, @Minibug, Voici un code que j'ai créé à l'issu d'une coopération avec Klaus,Marc et Silverman, sur le controle des touches clavier et de la souris. Voir ICI
- Code:
-
' ControleClavierEtSouris_Silverman_Marc_JC width 0,screen_x label touche : dim a$ timer 1: timer_interval 1,100 :timer_on 1 on_timer 1, touche
END
touche: timer_off 1 ' SI inkey$<>"" c'est uniquement le clavier qui est surveillé if inkey$<>"" message "key_up_code="+str$(key_up_code)+" / key_up_special="+str$(key_up_special)+" / key_down_code="+str$(key_down_code)+" / key_down_special="+str$(key_down_special)+" / scancode="+str$(scancode) else ' SINON surveillance des clic de souris en plus (affichage dans le bandeau car message provoque un click if scancode<>0 caption 0,"key_up_code="+str$(key_up_code)+" / key_up_special="+str$(key_up_special)+" / key_down_code="+str$(key_down_code)+" / key_down_special="+str$(key_down_special)+" / scancode="+str$(scancode) scancode=0 end_if end_if timer_on 1 return
Tu as au moins le clic sur la molette (Scancode=4). A+ | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Dim 9 Aoû 2020 - 12:03 | |
| Merci Jean Claude, C'est toujours ça de trouvé! Maintenant il me reste le retour sur le déplacement de la molette, et là c'est pas gagné ! A moins que Klaus puisse développer une fonction sous KGF sinon je ne vois pas... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Dim 9 Aoû 2020 - 15:02 | |
| Je suis en train de faire des essais... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Dim 9 Aoû 2020 - 15:17 | |
| Merci klaus. En fait c'est pour GPP... Ce n'est pas crucial mais ça serai un plus si on pouvait intégrer cette fonction. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mar 11 Aoû 2020 - 11:45 | |
| Problème résolu. Regarde le déscriptif et la démo des nouvelles fonctions... | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mar 11 Aoû 2020 - 12:27 | |
| Merci Klaus ! Je viens de tester ton exemple et c'est parfaitement parfait ! Je vais intégrer cela dans GPP. Un GRAND MERCI pour tout ce que tu fais Klaus...
Dernière édition par Minibug le Mar 11 Aoû 2020 - 12:42, édité 2 fois | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mar 11 Aoû 2020 - 12:28 | |
| | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mar 11 Aoû 2020 - 12:39 | |
| | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mar 11 Aoû 2020 - 18:51 | |
| Klaus,
Après quelques essais j'aimerai savoir si tu peux apporter une modification ou amélioration...
Comme dans ton exemple j'utilise le Form 0. Mais celui-ci est recouvert de nombreux objets. Je ne sais pas si cela est possible, mais j'aimerai que malgré les objets enfants présents sur le Form qu'il reconnaisse quand même la détection.
Est ce que tu crois que cela est possible ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 0:01 | |
| Le problème c'est que je n'ai que les coordonnées absolues à l'écran de la position du curseur, au moment de l'évènement. Je peux aisément trouver le handle de l'objet qui est sous le curseur, mais il donne le handle qui estimmédiatement sousjacent.
Imagine une Form 0, dans laquelle tu as un Panel 2, dans lequel se trouve un mémo 3. Lorsque tu tournes la molette avsc le curseur positioné dans le mémo, le handle que je trouve est celui du Memo. Je pourrais remonter au parent, et j'aurais donc le handle du Panel. Remonter encore ? Alors, j'aurais celui de la Form... faisable. Mais jusqu'où ?
Imagine que tu veuilles surveiller la Form 10, form annexe visible également à l'écran. Faut-il aller jousqu'à la form 0 et, si oui, comment ? La Form 10 n'a pas de parent...
On pourrait envisager une autre solution. Au lieu de donner le handle d'un seul objet, on pourrait donner une liste de handles visibles, et ma routine réagirait sur n'importe lequel de ces handles. Cela pourrait se faire via un DLIST ou un MEMO caché, contenant un handle par ligne, ou via un string contenant la liste des handles, séparés par des virgules.
Je pourrais également créer une fonction qu active ou désactive à volonté le hook après installation, sans le supprimer. Histoire de le rendre actif que dans certaines circonstances... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 1:06 | |
| J'ai fait la modif dans CreateGlobalMouseHook. Le paramètre à passer n'est plus le handle de l'objet, mais une liste de tous les handles des objets où l'on veut intercepter les évènements de la molette. Et on peut passer cette liste, comme dans le programme de démo, par l'adresse d'une chaîne de caractères contenant la liste des handles séparés par des virgules, ou par le handle d'un MEMO (invisible) contenant un handle par ligne, un par un LIST (invisible) ou par un DLIST, contenant également un handle par ligne. Regarde le programme de démo dans la rubrique "Nouvelles versions" que j'ai actualisé: https://panoramic.1fr1.net/t5206p875-kgf_dll-nouvelles-versions#77370Difficile d'être plus souple, non ? | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 12:48 | |
| Bonjour Klaus, J'ai eu quelques difficultés à mettre en oeuvre cette possibilité... Non pas a cause de KGF mais dans l'usage de HANDLE() qui m'a donné un peu de fils à retordre... Mais ça y est c'est en place et cela fonctionne parfaitement ! Je te remercie encore pour ton aide et ta disponibilité. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 13:23 | |
| De rien, Minibug ! Je retire une satisfaction immense de pouvoir résoudre de tels défis. En fait, c'est souvent la principale motivation pour de telles réalisations. Du genre "Qui a dit que c'est impossible ? Eh bien, on verra...".
Quant à l'utilisation concrète, plusieurs remarques:
1. tu as dû voir dans le programme de démo que j'utilise str$(handle(x))+","+str$(handle(y))+","+... pour créer la chaîne de chactères à fournir à la fonction qui installe l'interception des évènements de molette.
2. pour changer cette liste (ajouter ou retirer des handles), il suffit de supprimer l'interception par la fonction KillGlobalMouseHook et de la recéer en appelant à nouveau InitGlobalMouseHook suivi de CreateGlobalMouseHook, en passant une autre liste des handles.
3. les objets dont les handles sont passés à la fonction CreateGlobalMouseHook, peuvent résider dans des objets parents divers, même dans des forms différentes. Il peut y avoir même plusieurs forms dans cette liste, éventuellement avec leurs objets... C'est très ouvert et très souple.
Petite question complémentaire: Lors de l'interceptiion d'un évènement molette, est-ce que tu veux prendre la main au niveau de ton programme (c'est ce qui se passe actuellement) ou est-ce que tu veux juste être informé ? Veux-tu pouvoir interdire à Windows de gérer l'évènement et le faire toi-même, ou veux-tu laisser Windows faire son travail normalement ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 15:22 | |
| Dans l'intérêt de l'universalité de ces fonctions, j'ai ajouté ub paramètre à CreateGlobalMouseHook. On y donne la liste des flags de bloquage pour les objets de la liste des handles. Un "0" indique "laisser Windows traiter l'évènement", et "1" signifie "bloquer l'exécution par Windows du traitement de l'évènement". Tu verras, dans le programme de démo, deux lignes chargeant la variable bloquages$; dont une est désacivée. Fais des essaie avec l'une ou l'autre version, et observe ce qui se passe si tu places le curseur dans le premier mémo en haut à gauche, lors des évènements molette... Regarde le programme de démo, il a été mis à jour. En plus, le USER_EVENT retourne maintenant le "rang" de l'objet ayant reçu l'évènement. Le rang est le numéro d'ordre de l'objet dans la liste des handles. Voici le lien: https://panoramic.1fr1.net/t5206p875-kgf_dll-nouvelles-versions#77370 | |
|
| |
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: [RESOLU] fonction de récupération molette souris Mer 12 Aoû 2020 - 18:07 | |
| Merci pour ces infos complémentaires Klaus. Le blocage a effectivement un intérêt dans certains cas. Je viens de mettre à jour KGF... | |
|
| |
Contenu sponsorisé
| Sujet: Re: [RESOLU] fonction de récupération molette souris | |
| |
|
| |
| [RESOLU] fonction de récupération molette souris | |
|