Tout d'abord j'ai posté ma présentation, allez y faire un tour!
http://www.autoitscript.fr/forum/viewto ... =8&t=10055
C'est avec une certaine excitation que je poste ce message, pourquoi?, eh bien non seulement parce qu'avec cette udf j'ai résolu un problème sur lequel j'ai passé un peu plus de cinq heures et parce qu'après avoir tant demandé à ce forum et à cette communauté je peux enfin me rendre utile et apporter ma pierre à l'édifice.
Pour se remettre das le contexte de la création de cette udf/func (?) (création est un bien grand mot pour désigner mon humble participation):
-Je cherchais à faire fonctionner blockinput sous vista, pour cela il faut #requireadmin, or le script devait etre executé silencieusement et sur une session non-admin, j’eus donc recours à Runas, je conçu une machine infernale avec un premier script qui faisait un Runas sur un second avec #requireadmin qui faisait un Runas admin sur mon script (je me rendis compte après coup que le second script, intermédiaire, n'était pas nécessaire), cela fonctionna plutôt bien excepté le fait qu'il fallait tout de meme cliquer dans la fenêtre de l'UAC et donc, adieu la transparence, je fis donc des recherches (une demie-journée) pour contourner ce problème (j'en ai vu de toutes le couleurs..)
Mais hélas, il fallait se résigner, je ne pourrais jamais faire fonctionner blockinput sur vista de la manière que je recherchais, j'étais donc désespéré lorsque l'idée me vint que je pourrais reproduire l'effet recherché par mes propres moyens, c'est ainsi que je commençais à bricoler ce .... bricolage
Après cette "courte" introduction passons aux choses sérieuses!
Mon "UDF" (je ne sais pas vraiment si on peut l'appeler comme ça, je pencherais plus pour "PBM" => Petit Bricolage Maison. Vous allez comprendre....
Est composée de deux parties :
-l'udf en elle même
-Un exécutable
En effet afin de "bloquer" la souris, j'utilise MouseGetPos() et MouseMove () combinés, dans une boucle. Seulement autoit ne gère pas le multi-threading, donc ma fonction et sa boucle paralysaient tout script l'utilisant, c'est donc pour cela que cette "boucle" est compilée dans un exécutable qui est géré par l'udf (commencer / arrêter ), de ce fait la souris est "bloquée", (vous allez voir pourquoi je mets des guillemets), et le script peut continuer tranquillement sa petite vie en parallèle. Génial non?
Je mets "bloquée", puisque le curseur n'est pas vraiment immobile si l'on bouge la souris, en effet, dans ma boucle avec MouseGetPos() et MouseMove () (vous vous rappelez ? )
Je suis obligé de mettre un sleep (5) afin de ne pas la faire tourner en continu, sinon ça bouffe tout le processeur (oui monsieur, j'ai fait (pleins) de tests)
Mais rassurez vous ce n'est pas flagrant et la souris revient immédiatement à son point de départ. (Si une âme charitable avais une solution miracle .... ?? )
Donc je vous mets le zip avec l'udf
Pré-requis :
-"BIMV.exe" doit être dans le même dossier que votre script.
-Vous devez avoir été sage toute l'année et avoir les mains propres.
Conclusion
Ceci est ma première udf, alors soyez indulgents, si vous avez des conseils des remarques (ou même des compliments); j'accepte tout ce qui est constructif!
N'hésitez pas à m'indiquer des bugs ou des améliorations.
Et pour ceux qui n'ont pas vu au début, ma présentation est ici: http://www.autoitscript.fr/forum/viewto ... =8&t=10055
PS :
Je vais essayer de bricoler une udf pour "désactiver" le clavier, comme un inputblock keyboard !