Page 1 sur 1

[..] Bloquer les boutons de la souris

Posté : mer. 27 juin 2012 13:37
par barghin
Bonjour,

Je suis débutant dans l'utilisation d'Autoit, aussi je n'ai pas trouvé la solution à mon problème malgré mes recherches (peut être que je n'utilise pas les bons mots clé :? ).

Dans le cadre de mon travail, j'aurai besoin d'une astuce permettant de bloquer les clics gauche et droit (voir aussi le bouton de la molette) de la souris, le temps que mon script tourne.

Le contexte: j'ai développé un petit script permettant d'ouvrir Photoshop CS et automatiser le traitement par lot des fichiers en squizzant les messages d'erreur générés par les problèmes rencontrés lors du traitement de certaines images.
Étant un peu paranoïaque, j'aurai voulu interdire toute opération de la souris à n'importe quel utilisateur qui voudrait utiliser la machine, d'où ma demande.
Par contre, je ne souhaite pas bloquer le clavier...il peut toujours être utile :wink:
Auriez vous une idée?

Merci d'avance

Re: [..] Bloquer les boutons de la souris

Posté : mer. 27 juin 2012 13:58
par Myki
Salut,

Tu pourrais bloquer la souris dans un coin de l'écran avec la fonction _MouseTrap().
Ce qui empêche l'utilisateur de bouger le curseur mais pas de cliquer...

Re: [..] Bloquer les boutons de la souris

Posté : mer. 27 juin 2012 14:22
par mikell
Tu peux essayer l'UDF BlockInputEx qui permet de bloquer sélectivement clavier et/ou souris

Re: [..] Bloquer les boutons de la souris

Posté : mer. 27 juin 2012 14:28
par Myki
Ah oui, l'UDF est bien plus efficace que la méthode de mon post précédent.
Il y a un exemple tout prêt dans le package en plus : "Example - Block Mouse only.au3"

Re: [..] Bloquer les boutons de la souris

Posté : mer. 27 juin 2012 14:32
par mikell
Mais ton exemple n'est pas mal (et beaucoup moins lourd)

Code : Tout sélectionner

#include <GuiConstantsEx.au3>
#include <Misc.au3>
_MouseTrap(@desktopwidth, @desktopheight, @desktopwidth+1, @desktopheight+1)
  Sleep(3000)
_MouseTrap()
Exit

Re: [..] Bloquer les boutons de la souris

Posté : jeu. 28 juin 2012 15:57
par barghin
J'ai testé c'est trop bon!!!
Il ne me reste plus qu'à tout éplucher et intégrer à mon script.
J'indiquerai le sujet comme résolu quand je l'aurai testé en live :D
(dans pas longtemps ne vous inquiétez pas).

Re: [..] Bloquer les boutons de la souris

Posté : sam. 30 juin 2012 08:57
par barghin
Aie j'ai voulu intégrer la commande _BlockInputEx dans mon script, problème: la commande send n'est plus prise en compte:

Code : Tout sélectionner

#include <BlockInputEx.au3>

HotKeySet("{ESC}", "_Quit");
_BlockInputEx(2)

Func _Quit()
   Exit
EndFunc

;code du script ici

send("{ENTER}")

;code du script là

Send("{ESC}")

Une idée du problème?

Re: [..] Bloquer les boutons de la souris

Posté : sam. 30 juin 2012 10:13
par silvere
Je crois que se sujet a déjà été aborder moi je te propose d'enlever le BlockInput faire la fonction send et remettre le BlockInput.

Re: [..] Bloquer les boutons de la souris

Posté : sam. 30 juin 2012 11:00
par barghin
Je suis d'accord avec toi, déplacer le _BlockInputEx après le send fonctionne.
Mais là le jeu se complique vraiment: mon script est basé en majorité sur la fonction Send (j'en ai partout, pour fermer des fenêtres indiquant des messages d'erreur différents).
Avec cette commande, on peut effectivement bloquer les actions de la souris en laissant la main pour pianoter sur le clavier
Mais d'après mes constatation, il semblerait que le script ait besoin que la souris soit activée pour exécuter Send("{ENTER}") dans le script...
Extrait du code de ma boucle DO...While:

Code : Tout sélectionner

if winexists("Adobe Photoshop","Impossible d'effectuer cette opération car le segment de marqueur JPEG est trop court (le fichier est peut-être tronqué ou incomplet).") then send("{enter}")
   if WinExists("Non-concordance des profils incorporés", "") Then Send("{enter}")
   if WinExists("Adobe Photoshop","Impossible d'effectuer cette opération en raison d'un marqueur JPEG inconnu ou incorrect.") Then Send("{enter}")
   if WinExists("Adobe Photoshop","Aucun fichier source n'a pu être ouvert par Photoshop.") then Send("{enter}")
   if WinExists("Adobe Photoshop","Impossible d'utiliser le profil ICC incorporé, car le profil ICC est incorrect. Le profil sera ignoré.")then Send("{enter}")
   if WinExists("Remplacer les fichiers", "Certains des fichiers spécifiés existent déjà dans l'emplacement cible. Les fichiers ci-dessous seront remplacés.") Then Send("{enter}")
   if WinExists("Adobe Photoshop","Une erreur s'est produite lors du traitement par lots. Vérifiez les détails du fichier du journal des erreurs")then Send("{enter}")
   if WinExists("Adobe Photoshop","Impossible d'effectuer cette opération car Photoshop ne reconnaît pas l'extension de fichier.") Then Send("{enter}")
 
C'est très indigeste, mais je n'ai trouvé que ça en tant que débutant.
Je pense qu'il faudrait pouvoir distinguer dans le code la fonction ENTER du clavier et celle de la souris. Mais je n'ai encore rien trouvé.
C'est peut être tout simplement impossible...
P.S.: si un post parle déjà de ce problème, je suis preneur (pas trouvé)

Re: [..] Bloquer les boutons de la souris

Posté : mar. 03 juil. 2012 22:37
par jguinch
Salut
Si le send() ne fonctionne plus, c'est peut être qu'il faut tout simplement choisir la fenêtre dans laquelle faire le send()

Code : Tout sélectionner

WinActivate("Adobe Photoshop")
Send("xxxx")
Sinon, j'ai bricolé le truc suivant (CTRL + SHIFT + FIN pour quitter)

► Afficher le texte

Re: [..] Bloquer les boutons de la souris

Posté : mer. 04 juil. 2012 10:32
par blacksoul305
Salut,

tu devrais essayer la fonction ControlClick. Je ne sais pas si elle va marcher, mais c'est tout de même plus propre que les Send qui balancent la touche n'importe où.