[R] Simuler l'appui sur deux touches du clavier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

[R] Simuler l'appui sur deux touches du clavier

#1

Message par abdel792 »

Bonjour, voilà, je souhaiterais avec un script AutoIt V3, simuler l'appui sur les deux touches suivantes : "Insert et F4" simultanément.

Je n'arrive pas à le faire !

J'ai essayé ceci :

Send ("{Insert}+{F4}") et plein d'autres combinaisons, ça ne donne rien.

Quelqu'un pourrais t-il m'aider?

Je vous remercie d'avance.
Modifié en dernier par abdel792 le dim. 13 sept. 2009 21:55, modifié 4 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#2

Message par Iste »

Salutations,
Doc autoit a écrit :To hold a key down (generally only useful for games)
Send("{a down}") ;Holds the A key down
Send("{a up}") ;Releases the A key
Donc, pour votre exemple,

Code : Tout sélectionner

Send("{INSERT down}")
Send("{F4}")
Send("{INSERT up}")
Je n'ai fais que de bref teste, mais ca a l'air de fonctionner ;)
Signez ici
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: Simuler l'appui sur deux touches du clavier

#3

Message par abdel792 »

Je vous remercie pour votre réponse.

Cependant, le problème persiste.

Lorsque je lance le raccourci "Insert F4" manuellement, celà m'ouvre une boîte de dialogue.

Lorsque j'exécute le script, cette boîte de dialogue ne veut pas s'ouvrir.

J'ai même ajouté une fonction WinWaitActive avec en paramètre, le titre de la fenêtre de cette boîte de dialogue, ça donne rien.

Je possède AutoIt V3.2.12.1.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#4

Message par Iste »

Hum étrange,
Mais pas facile, d'autant que je ne peux pas tester ^^'
chez moi, ce code pour un 'couper' marche tres bien

Code : Tout sélectionner

Send("{RCTRL down}")
Send("x")
Send("{RCTRL up}")
Mais je n'ai pas d'application qui demande de raccourcit insert+F4 :s
Quel est ce logiciel ? (qu'on puisse regarder de plus pres)
Signez ici
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: Simuler l'appui sur deux touches du clavier

#5

Message par abdel792 »

Bonjour,

En fait, ce logiciel s'appelle JAWS For Windows, c'est un logiciel de revue d'écran pour personnes déficientes visuelles.

Il permet de lire à haute voix ce qui se passe à l'écran pour des personnes mal ou non-voyantes.

Dans ce logiciel, le raccourci "Insert F4" ouvre la boîte de dialogue de sortie du logiciel, on a alors une confirmation à valider.

C'est cette boîte de dialogue que je n'arrive pas à faire afficher avec le script AutoIt V3, alors que manuellement, ça fonctionne très bien.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#6

Message par timmalos »

Essayez avec un ControlSend sur le Handle de la fenêtre.
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#7

Message par abdel792 »

Bonjour, je vous remercie pour votre aide.

Cependant, je n'arrive pas à faire un ControlSend sur une fenêtre qui ne s'est pas ouverte.

En fait, le problème c'est que la fenêtre de confirmation s'ouvre bien lorsque j'exécute le raccourci "Insert F4" manuellement, mais je n'arrive pas à la faire afficher avec un script Autoit.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#8

Message par timmalos »

Désolé de mon message peu précis : Je parlais de l'handle de votre programme avant que la fenetre s'affiche, le programme qui vous permet grace à Insert+F4 d'afficher la fenetre qui vous interesse.

Si ControlSend ne marche pas, n'y a t'il pas un moyen de lancer cette fenetre autrement que par le raccourci? Par exemple, dans le Menu tout en haut, qu'on pourrait atteindre avec un ControlClick.
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#9

Message par abdel792 »

En fait, ce programme s'exécute en tâche de fond, assistant ainsi l'utilisateur déficient visuel dans pratiquement toutes les applications et fenêtres ouvertes.

Il affiche une icône dans la zone de notification de Windows.

Si une fonction spécifique à Autoit V3 pourrait permettre d'atteindre cette zone de notification et effectuer un click droit sur l'icône de ce programme, la commande quitter qui s'exécute lorsque nous faison "Insert F4" serait accessible.

Certes, le chemin pour y accéder serait plus long, mais si on a pas le choix, autant essayer !

Existerait t-il une commande permettant d'atteindre l'icône d'un programme donné dans la zone de notification de Windows?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#10

Message par orax »

J'ai essayé d'installer la version démo de JAWS pour tester, mais l'installation bloque vers les 5%...
Sinon, à tout hasard, est-ce que ce code ouvrirait la fenêtre ?

Code : Tout sélectionner

Send("{INSERT down}")
Send("{F4 down}")
Sleep(5000)
Send("{F4 up}")
Sleep(1000)
Send("{INSERT up}")
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#11

Message par abdel792 »

Bonjour, je viens d'essayer le code, ça donne toujours rien.

Je vous remercie de vous être penché sur ce problème.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#12

Message par orax »

Si j'ai bien compris, le raccourci sert à fermer le programme, donc éventuellement vous pourriez le fermer de cette façon (il ne sera pas fermé brutalement) :

Code : Tout sélectionner

#include <SendMessage.au3>
Global Const $WM_CLOSE = 0x0010
_SendMessage($handle, $WM_CLOSE)
Mais il faut avoir le handle. J'ai testé sur notepad, ça à l'air de marcher. Image
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#13

Message par abdel792 »

OK, je vous remercie.

Vous dites qu'il faudrait avoir le handle.

Serait t-il possible de pouvoir l'obtenir, je veux dire le handle, avec Autoit, où y aurait t-il un autre moyen?

De plus, l'icône de cette application est réduite à un bouton dans la barre des tâches système car elle s'exécute comme je vous l'ai expliqué, en tâche de fond.

Si j'atteins ce bouton par l'intermédiaire de son handle, est-ce que j'obtiens le masquage de l'icône de l'application dans la barre des tâches système uniquement, ou bien celà désactive t-il complètement l'application ciblée?
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Simuler l'appui sur deux touches du clavier

#14

Message par orax »

Je ne sais pas si ça marchera dans votre cas.
c'est donc WinGetHandle récupérer le handle.
J'ai fait un test avec Orbit et ça me ferme bien le programme (même quand la fenêtre est icônisée) si je n'ai pas coché "réduire dans la barre des tâches" dans les options.

Code : Tout sélectionner

#Include <WinAPI.au3>
#include <SendMessage.au3>
Global Const $WM_CLOSE = 0x0010
$handle=WinGetHandle("Orbit") ; récupère le handle de la fenêtre de Orbit d'après son titre
_SendMessage($handle,$WM_CLOSE)
Par contre, je crois qu'il faut que dans le programme que vous avez, qu'il y ait au moins une fenêtre pour que ça marche, puisque visiblement SendMessage est censé envoyer le "message" WM_CLOSE à une fenêtre. Il faudrait mettre WinGetHandle("LE TITRE DE LA FENETRE").

Mais de toutes façons, je crois qu'il y a peu de chances que ça marche... :oops:
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
abdel792
Niveau 2
Niveau 2
Messages : 21
Enregistré le : sam. 27 juin 2009 13:28
Status : Hors ligne

Re: Simuler l'appui sur deux touches du clavier

#15

Message par abdel792 »

Bonjour, je viens d'essayer en décochant la case "Réduire dans la barre des tâches", dans la configuration de JAWS et le code suivant m'ouvre bien la boîte de dialogue de confirmation de fermeture du programme.

Code : Tout sélectionner

#include <SendMessage.au3>
Global Const $WM_CLOSE = 0x0010
$handle=WinGetHandle("JAWS", "")
_SendMessage($handle, $WM_CLOSE)
 
Merci pour cette solution qui répond quand même en quelque sorte à mon attente.

Je vais baliser la discussion comme résolue.
Répondre