ADDIN WHEEL VB : ACTIVE LA ROULETTE DANS VB

clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 - 4 avril 2006 à 04:25
Chess0 Messages postés 13 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 23 avril 2008 - 23 avril 2008 à 21:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36883-addin-wheel-vb-active-la-roulette-dans-vb

Chess0 Messages postés 13 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 21:47
Très utile comme code et ça fonctionne impeccablement. Merci Clementio!
cs_titi2b Messages postés 24 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 20 février 2010
10 oct. 2007 à 19:15
Je viens de découvrir cet addin et j'essaye de le faire fonctionner avec un datagrid.
Un petit coup de main svp.

a bientot
FMatrix07 Messages postés 233 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 21 février 2009 2
10 juin 2007 à 09:21
Je trouve cet addin superbe, je cherchais depuis bien longtemps à le faire merci beaucoup.
Je le recommande à tous les utilisateurs de VB

Bonne prog et bonne continuation
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mars 2007 à 14:57
je l'avait pas vue avant ta source Clem'

me rappelle certaines questions que tu m'avais posées sur le hook MOUSE_LL, y'a quelques temps, c'était donc (je suppose, a posteriori) pour ça ^^
cs_jipef Messages postés 55 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 1 août 2008
18 déc. 2006 à 13:59
je me sers des 2 depuis 2 ans sans aucun pb
j'ai aussi un driver Logitech Itouch 2.22 289 mais il ne gère pas le scroll molete quand la fenetre de code est partagée . J'ai ajouté le driver de Labtech Mouse32a.exe version 2.0
le scroll molette est ok dans les 2 demie fentres
A+
yan35 Messages postés 185 Date d'inscription dimanche 29 juin 2003 Statut Membre Dernière intervention 20 juin 2013
18 déc. 2006 à 01:30
Sympa, j'essaye.
Merci
cs_danone Messages postés 28 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 octobre 2009
14 août 2006 à 09:13
Tres bien comme code et tres pratique c'est ce que je recherchai et en plus ca m'a permis de decouvrir MZTOOLS qui est vraiment tres chouette et en Francais je suis vraiment comblé hi hi
cs_jipef Messages postés 55 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 1 août 2008
5 juil. 2006 à 14:23
trés bien ce qu'a fait clementio
mais l'échange dans un forum est aussi de faire passer ses connaissances donc rendre service aux autres tout le monde ne peut passer son temps à faire du code pour du code il faut aussi être productif

par exemple 2 add-ins de VB6 qui sont des outils pro et gratuits ( je vous souhaite bien du plaisir si vous voulez les écrire !!)
MZtools et SmartIndenter

http://www.mztools.com/index.htm
MZtools existe aussi pour VB net mais payant

www.oaltd.co.uk est le site de Stephen Bullen auteur de SmartIndenter
Carlos Quintero est le développeur de MZTOOLS

Salut à tous
emboot Messages postés 2 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 5 juillet 2006
5 juil. 2006 à 12:52
JIPEF

"Le but de ce site est de partager nos connaissances.

Le principal n'est pas l'utilité ou de savoir si un autre programme le fait déjà mais c'est de comprendre la manière d'y arriver." (Clementio)

Tout est dit, il n'y a rien à ajouter !!!
cs_jipef Messages postés 55 Date d'inscription lundi 23 août 2004 Statut Membre Dernière intervention 1 août 2008
4 juil. 2006 à 19:54
Pourquoi réinventer la roue....de souris
ici on trouve un pilote qui marche trés bien en VB
ce pilote permet le scroll en VB mêmem dans une fenetre de code partagée en 2
http://www.labtec.com/index.cfm/service/listing/EUR/FR,crid=68,crid2=1763
"mw9791fra.exe" sur le site de logitech ne fait pas ça
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
10 avril 2006 à 14:07
Merci, content que ça marche...
elisath Messages postés 13 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 10 avril 2006
10 avril 2006 à 14:05
Je te remercie ça marche beaucoup mieux maintenant. Ca fait plaisir de pouvoir réutiliser cette molette sous VB. Je vais enfin ne plus regretter mon portable sous Windows 98 qui a toujours bien fonctionné.
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
10 avril 2006 à 12:56
elisath --> C'est normal qu'il te manque le .exe. Il est supprimé lors du téléchargement de la source. Il te suffit d'ouvrir le répertoire "Projet", de lancer le projet et de créer l'exécutable hookwheel.exe. Ensuite, ferme VB et relance.

gerard45 --> En fait Command sert à récupèrer un argument passé au programme en ligne de commande vu que l'exécutable est censé être lancé par la DLL lui passant le nombre de lignes à défiler (3 par défaut). Ce n'est pas un programme à lancer seul normalement...

Dites-moi si ça résoud vos problèmes...
cs_gerard45 Messages postés 2 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 10 avril 2006
10 avril 2006 à 10:03
j ai lance ca dans vb, a quoi sert la ligne "NBE_LIGNES = CLng(Command)" qui bug et qui de plus modifie la ligne précédente qui est " NBE_LIGNES = 3" ??? une fois la ligne en cause commentée ca marche
elisath Messages postés 13 Date d'inscription vendredi 7 mars 2003 Statut Membre Dernière intervention 10 avril 2006
10 avril 2006 à 09:36
Je suis désolé de dire ça mais j'ai essayé cette vesrion et elle ne fonctionne pas dans l'environnement SDI. Ou alors il y a quelque chose de plus à faire que de lancer zinstall.bat. Par contre tu parles d'un .exe à laisser avec la DLL alors que ton fichier zip ne comprends pas le fichier hookwheel.exe qui est sur le descriptif de la source. Peux tu refaire ton zip et inclure ce fichier.
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 20:43
J'ai aussi rajouté un autre exemple avec le composant ScrollBar de VB cette fois-ci...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 20:26
Merci, content que ça marche...

J'ai rajouté un petit plus à l'AddIn. Maintenant en appuyant sur Ctrl gauche en défilant, ça navigue de procédures en procédures. Ca s'avère vite très pratique, n'empêche...
dany108 Messages postés 71 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 6 janvier 2011 1
6 avril 2006 à 16:56
J'ai mis en application pour les MsFlexGrid : c'est top !!!!!!!!!!!
Bravo.
emboot Messages postés 2 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 5 juillet 2006
6 avril 2006 à 08:17
Moi je dis Bravo.
Un petit addin qui mèle l'utile à l'agréable.
De plus, la source et les commentaires qui en découlent s'avérent très instructifs pour des petits nouveaux comme moi.
L'approuver c'est l'adopter. (ou l'inverse)
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 01:13
Je viens de tester en lançant le prog + une autre aplli contenant un MsFlexGrid et ça marche aussi... En fait, ça envoie le message à n'importe quelle fenêtre de la classe "MSFlexGridWndClass"...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 01:09
Bon, je t'ai ajouté un exemple avec un MsFlexGrid dans le dossier "Projet". Tu as juste à lancer pour tester...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 00:54
En fait, il te suffit de trouver le handle de ton MsFlexGrid (c'est une fenêtre "fille" de ton appli). Et essaies de lui envoyer le même message que mon prog (avec les bons handles)...

Lis mes commentaires pour en savoir plus...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
6 avril 2006 à 00:51
Comme je l'ai dis un peu plus haut, utilise Spy++...
dany108 Messages postés 71 Date d'inscription mardi 29 janvier 2002 Statut Membre Dernière intervention 6 janvier 2011 1
6 avril 2006 à 00:43
Cette source est très intéressante mais moi ce que j'aimerais trouver, c'est comment faire fonctionner la molette de souris avec un MsFlexGrid dans une application compilée.
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
5 avril 2006 à 14:03
Le but de ce site est de partager nos connaissances.

Le principal n'est pas l'utilité ou de savoir si un autre programme le fait déjà mais c'est de comprendre la manière d'y arriver.

Comme j'ai dit plus haut, ce n'est pas en installant FreeWheel que tu comprendras comment installer un hook bas niveau...

A chacun son ouverture d'esprit...
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
5 avril 2006 à 08:15
Le code en soi est bien fait, mais en effet, vous reinventez l'eau chaud je pense. Perso j'utilise l'utilitaire gratuite : FREEWHEEL pour faire fonctionner la roulette partout.
julescezar Messages postés 4 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 16:42
Ouais tu peux faire ça ...
Ca permettra de s'affranchir des problèmes que t'as constaté avec le mouseware.
En fait je parlais de mouseware parce que le logiciel qu'on vend au taff ne gère pas le wheel dans certains des contrôles et c'est la seule réponse temporaire qu'on a pu apporter au client lol.
Et comme toutes réponses temporaire ça devient parfois définitif lol.

Bon courage
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 16:33
Si tu veux en venir au fait que je fasse un prog qui gère et VB et tout le reste, là ça peu devenir inréressant. Je chope tous les Wheels avec mon prog, ça ne doit pas être si dur de les redistribuer....

Je vais y réfléchir, merci de tes remarques ;-)....
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 16:30
Ohlaaa!!!! eh j'ai pas dis que c'était un prog de "merde".

Mais tu sais la programmation, c'est aussi souvent réinventer la roue....

Et je ne pense pas que MouseWare te permette de comprendre un peu mieux les hooks de bas niveaux et les envois de message à une ScrollBar...

Mais bon, reste avec ton prog et ne profite pas des exemples de code qu'on peut t'apporter à ce moment là...
julescezar Messages postés 4 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 16:25
Pour en finir avec mon mouseware lol ...
Je pense que la discussion a bien fait avancé ton projet.

Maintenant mon petit exe de merde qui se lance en tache de fond ne gère pas que le wheel de l'IDE VB.
Il s'occupe de tous les autres prog aussi...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 16:02
Ca y est, ça marche impec!!!!

Alors c'est super simple:

- Un AddIn juste là pour lancer le prog externe à l'ouverture de vb.
- Le prog externe qui gére intégralement le hook, les scrolls et tout... Il vérifie à l'aide d'un timer si VB est toujours lancé sinon il quitte.

Voilà, c'est tout bête mais ça évite le temps de latence qu'on a pu constaté. Et en plus, géré le hook dans un process différent permet à VB de ne pas planter si le prog plante, pas mal, non???
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
4 avril 2006 à 15:50
Salut clementio.

On est sur VbFrance et si une source existe et que tu la reprend pour l'ameliorer, moi en tout cas cela ne me pose aucun probleme bien au contraire et d'ailleurs la version 2 que j'ai mise n'est autre que la version de EBArtSoft mais pour le SDI.

Ma version fonctionnait pas tres bien je l'avoue mais j'avais d'autre projet et je n'y ai pas retoucher.

La tienne fonctionne beaucoups mieux sauf le temps de latence que tu a souligner precedemment, mais je vais essayer de compiler tout ca dans un projet pour voir.

@+
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
4 avril 2006 à 13:55
Je préfère également le AddIn, les logiciels pour souris perturbent parfois les captures souris dans les progs.

Clem>Y'a pas de mal à bosser comme ça, je n'ai pas pris l'habitude c'est tout. Au moins l'éditeur VB te laisse le choix ;o).
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 13:04
Je préfère un AddIn qui se lance uniquement lorsqu'on utilise VB plurôt qu'un prog qui tourne en tâhe de fond en continu...

Si vous avez testé, vous avez pu voir qu'il y a un petit temps lorsqu'on ferme une fenêtre dans VB (Code, Form, Propriétés...). C'est dû au hook de la souris. Mais ça de vient vite chiant...

J'ai essayé de passer par une DLL ActiveX externe pour voir si ce ralentissement de fermeture de fenêtre avait baissé et non, ça ne marche pas. Ensuite j'ai utilisé la DLL C++ de BruNews. Idem, ça ralentit toujours la fermeture d'une fenêtre. Après j'ai essayé d'attribué un hInstance différent de celui de l'application à mon hook et ça ne marche pas non plus.

Mais j'ai trouvé, en compilant tout ça dans un projet normal. On exécute et le scroll marche bien dans les fenêtres VB et la fermeture des fenêtres est instantannée!!!

Donc je fais un prog juste avec un module qui lancera VB et quittera à la fermeture de VB. Il y aura les 2 versions dans le prochain zip...
julescezar Messages postés 4 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 12:32
Je pense que c'est un coup de pas de chance !!!
Perso, j'ai mis ça au taff et le prog n'a jamais planté.
Effectivement il se lance peut être au démarrage ...
Bon ben après c'est toi qui voit.

Moi je trouve ça plus pratique qu'un ADD-IN mais chacun son point de vue koi ...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 11:43
Par curiosité, j'ai télécharger MouseWare dont tu parles. A la fin de l'install, il me demande de redémarrer. Et là, plus de souris... C'est peut-être parce que je l'ai empêché de se lancer au démarrage. Mais bon, si le prog ne se lance pas au démarrage ou si il plante pour je ne sais quelle raison (ici c'est moi qui l'ai désactivé) et bien on a pas de souris... Pas terrible quand même.

Du coup, j'ai tout désinstallé au clavier. Et le comble c'est que ma souris est une Logitech!!!
julescezar Messages postés 4 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 11:19
Salut les gars ...
Personnellement j'ai installé le driver Logitech ( même si ma souris n'en est pas une ) et ça fait fonctionner la molette dans l'IDE ( en mode SDI ou non ).
Pratique quand même ...

PS : nommé "mw9791fra.exe" sur le site de logitech
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 11:09
Depuis le début, je bosse comme ça...
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
4 avril 2006 à 11:07
SDI : AHHHHRRGGGHHHH !!!! On dirait du Borland !!
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 11:06
La technique utilisée est un hook bas niveau sur la souris. En cherchant sur Internet (MSDN particulièrement), j'ai lu que Microsoft dit qu'on ne peut pas faire de subclassing sans appeler de DLL externe. Et bien, c'est faux... d'autres l'on fait. BruNews en particulier dont j'ai traduit le code C++ (je crois) en VB.

Et pour ce qui est de la partie ScrollBar, ça se complique. En fait pour scroller une fenêtre (celle de VB en tout cas), if faut envoyer un SendMessage avec comme paramètres:

- Le handle de la fenêtre à scroller (normal...)
- Le type de message, ici WM_VSCROLL (scroll vertical)
- L'action à faire, ici SB_LINEUP ou SB_LINEDOWN (+ ou - 1 ligne répétée 3 fois)
- Le handle du ScrollBar --> et là c'est chaud.....

Et bien dans ce cas là, si vous voulez tout savoir sur les messages des fenêtres, un seul prog : Spy++ (disponible dans le dossier Tools du CD VB6). Avec ce prog, on peut espionner tous les messages qui transitent en fonction d'une fenêtre particulière, de ces "enfants", des types de message....

J'ai donc compris avec ça qu'il fallait que je cherche dans les "enfants" de ma fenêtre de code VB. Grâce à l'API EnumChildWindows, j'ai pu récupérer le handle de mon scrollbar. Et tant que j'y étais, j'ai retrouvé ce handle en fonction de la position de la souris. Et oui, si il y a les 2 ScrollBars verticales d'activées, il faut bien le prendre en charge (voir capture).

Bref, tout ça pour dire que si voulez travailler avec les messages des fenêtres, utilisez Spy++, on trouve vite fait ce qui nous intéresse...
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
4 avril 2006 à 10:37
Vraiment bien !
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 08:47
Tu vas dans outil > options > étendues et tu coches environnement de développement SDI... Je te laisse découvrir...
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
4 avril 2006 à 08:43
Bonjour,

J'allais dire : "Mais ça existe déjà !!" mais ce n'est pas exactement la même chose. Je ne sais pas la version que j'ai mais ça fonctionne bien.

Au fait : c'est quoi SDI ?

++

Moustachu
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
4 avril 2006 à 04:25
En plus, je viens de remarquer que si on scroll sur une fenêtre qui n'a pas le focus, ça lui redonne, cool non???
Rejoignez-nous