Autres toutes versions tester le scrool avec la roulette sans passer par un hooking en addressof

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
la principal raison des crash excel quand on utilise le hooking de la souris pour avoir le mouse wheel(la roulette)
c'est que le looping avec le (CallnextHook)est asynchrone avec le captage du message de la souris
donc quand une erreur se produit(on va trop vite ou autre)
le looping lui continue parfois au moins une fois même en erreur
résultat comme on déplace le block type du message en mémoire ça crash

je vous propose de tester ceci
ici on va rester dans un do/loop vba classique et le message de la souris sera récupéré par un peekmessage
si il y a une erreur (du au message de la souris non conforme) normalement on a une erreur vba classique
et donc le do/loop est interrompu
donc pas de relance avec un message de la souris erroné donc pas de crash
Vous constaterez que j'augmente l'allocation de la mémoire aussi (64 bits double (longlong ou longPtr))(+2&)

d'autant plus que la dans cette démo je met tout dans le userform
ce qui n'est pas possible avec un code de hooking bien entendu
et ça peut avoir un avantage lorsque l'on veut distribuer un interface(userform) sans devoir l'accompagner de x modules

toujours pareil pour déterminer le rectangle je me sert de ma fonction perso du calendar que j'ai modifié pour ce besoins
donc testez et si ça fonctionne je ferais une ressource au propre

merci d'avance pour votre participation

j'en connais un qui vas ouvrir grand les yeux 🤣

Patrick
 

Pièces jointes

Solution
Bonjour @jurassic pork , @Dudu2 , @Nathe
j'ai mis le controlrelease en optionnel dans la démo (fonctionne aussi dans userform)
j'en ai profité pour mettre un multipage
et dans la page 1 du multipage j'ai mi un label violet
et c'est lui qui pilote le scroll de la page
comme ca on peut mettre un fond sur chaque page vu que ce control n'a pas de propertie backcolor
bien évidemment j'ai ajouté le textbox
dans cette démo donc on a le controlrelease optionnel
et le scroll piloté par un autre control
voila comme ça on est au même niveau que la V 3.0 avec iaccessible (All control working)

patrick
re
Bonjour @jurassic pork
oui mais le test se fait sur le handleparent pour la classe je ne m'ennuie pas je prend celui là
donc ça marche ?
Sur mon Excel 2021 64 bits pour que cela fonctionne il faut utiliser ta première version de PointApiToLong (celle avec t8), faire la modif dans handleCombo et pour le Multipage il faut scroller en haut à droite du multipage (si on est dans une page ne fonctionne pas) :
ScrollerInkCollectorPatrick.gif


A vérifier la version de FM20.dll utilisée . Moi c'est la 16.0.18429.20044

Ami calmant, J.P
 
Dernière édition:
tu comprends que ça n'a pas de sens
puisque a partir du moment ou je donne le focus a un handle il ne le perds pas tant que suis par retourné dans le userform ou passé sur un autre control
parti de la ou que tu soit dans le multipage le scroll doit fonctionner
essai de remettre la FM20 d'origine tu la retrouve dans les cab de l'iso ou dossier d’installation si tu a décompilé l'iso
 
re
et voilà le problème du textbox résolu
en fait il faut aller chercher le unknow handle et prendre le child
demo1.gif

voila sans hooking sans peekmessage ni looping en addressof ou pas
me reste a mettre tout ça dans une classe histoire d'avoir un module utilitaire scroll pour userform ultra light en ressource
 
re
et en fait pour le Inkcollector le child direct du userform suffit pour tout les control
en même temps quand on y réfléchi 2sec c'est evident vu qu'a la base c'est prévu pour les tabletPC le doight doit être capter partout
donc en fait je me suis ennuyé a récupérer les bons handles alors que ça n'était pas nécessaire
du coup
fini windowfrompoint
fini copymemory et ou son substitut
fini getparent
fini pointapi
problème pour choper le handle directement par findwindowhex ça ne fonctionne pas
on utilisera donc le joker avec la #172 de la shlwapi.dll
et le getwindow avec argument 5 pour le child
nous voila donc avec un handle corespondant au rectangle intérieur de l'userform( lui aussi classe "F3 server xxxxxxxx"
comme il n'est pas activable par la souris puisque c'est l'userform tout entier qui s'active avec la souris "classe thunderXDFrame"
on est tranquille puisque a partir du moment ou un control est focusé ce handle a le focus aussi
donc plus de perte de focus sur le handle dans le inkcollector
démo, des handle avec spy++
demo1.gif

et voila donc en ayant tout supprimer au niveau de recherche de handle et ne gardant que le unknow child
demo1.gif

vous constaterez que maintenant c'est toujours le même handle maitre
punaise j'suis en forme moi 🤣 🤣 🤣
qu'en dis tu @jurassic pork
on peut remercier Dan_W dans l'autre monde excel qui m'a bien mis sur la voie quand même
 
re
si ca fonctionne sur les textbox ( ce qui entre parentèses est le plus difficile puisque pas de handle) ça devrait fonctionner sur les autres encore plus facilement
a mon avis tu a un sérieux problème avec tes librairies
il n'y a rien de logique dans tes résultats
mais en même temps je ne suis pas étonné
quand j'ai testé ta dll charp truc muche là ca a marché
mais dans mes nouveaux projets userforms ,des que je voulais ajouter un control dynamique ca marchait plus
ni manomano d'ailleurs
certains events ne marchait plus non plus et j'en passe

teste progressivement sur tes box virtual version par version en espérant que tu les ai pas traficoté aussi celles là de version
y a que comme ça que l'on pourra trouver ce qui ne va pas
mais j'en doute chez dan_W office 2021 64 ça fonctionne ,c'est basé sur son exemple
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

P
Réponses
1
Affichages
810
P
Retour