Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

simuler des touches

2 réponses
Avatar
Rod
Bonjour,

j'ai un programme qui demarre en meme temps qui demarre en meme temps que
windows.

Celui tourne donc en permanence.
A tout moment lorsque j'appuie sur "ctrl+alt+s" par exemple, il demarre
l'enregistrement sonore de mon micro.
En appuyant sur "ctrl+alt+e", il arrete l'enregistrement.
Notez bien que je n'ai pas besoin que la fenetre du programme soit active,
il detecte tout de meme l'utilisation de ces touches.

Je souhaiterais trouver un moyen de simuler ces touches par script (perl,
vb, etc etc).

J'ai bien essayer:
sendkeys "(%^S)"

mais cela ne marche pas.
J'ai aussi trouvé grace a google des programme dos (sendkeys.exe) qui envoit
des combinaisons de touches mais à chaque fois c'est à un programme precis.
C'est à dire qu'il lui faut comme parametre le nom d'un programme qu'il
demarre, et il envoit ces touches à lui seulement.

Connaissez vous donc un moyen de cimuler l'appui sur des touches sans
spécifier un programme précis??

merci.

rdo

2 réponses

Avatar
Jean-Claude BELLAMY
Dans le message news:41bec2e1$0$22326$ ,
Rod s'est ainsi exprimé:

j'ai un programme qui demarre en meme temps qui demarre en meme temps
que windows.

Celui tourne donc en permanence.
A tout moment lorsque j'appuie sur "ctrl+alt+s" par exemple, il
demarre l'enregistrement sonore de mon micro.
En appuyant sur "ctrl+alt+e", il arrete l'enregistrement.
Notez bien que je n'ai pas besoin que la fenetre du programme soit
active, il detecte tout de meme l'utilisation de ces touches.

Je souhaiterais trouver un moyen de simuler ces touches par script
(perl, vb, etc etc).

J'ai bien essayer:
sendkeys "(%^S)"

mais cela ne marche pas.
J'ai aussi trouvé grace a google des programme dos (sendkeys.exe) qui
envoit des combinaisons de touches mais à chaque fois c'est à un
programme precis. C'est à dire qu'il lui faut comme parametre le nom
d'un programme qu'il demarre, et il envoit ces touches à lui
seulement.
Connaissez vous donc un moyen de cimuler l'appui sur des touches sans
spécifier un programme précis??


Tu es OBLIGÉ de désigner un programme !
Les messages claviers sont envoyés à l'application qui a le focus, il faut
DONC savoir quelle est cette application (pour éventuellement lui redonner
le focus).

Par exemple, un cas simple et universel, la séquence <ALT><F4> ferme
l'application qui reçoit cette séquence.
Il y a donc intérêt de savoir laquelle !

les commandes "sendkey" en VBS doivent être précédées d'une commande
shell.AppActivate("xxxxxxx")
"xxxxxxx" étant tout ou partie du titre de la fenêtre prinicpale de
l'application concernée.
Il est même recommandé de faire une boucle :

exemple :

shell.Run "notepad.exe", SW_SHOWNORMAL
While not shell.AppActivate("Bloc-notes")
WScript.Sleep 100
Wend
...
shell.sendkeys "......"
...


NB: l'application concernée peut tout simplement être .. l'explorateur de
Windows ..

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Rod
merci pour ton aide.
J'ai deja résolu un des problèmes, la commande sendkeys ne marchait pas car
je mettais en majuscule la lettre au lieu de la mettre en minuscule dans mon
script:
sendkeys "(%^S)"
au lieu de
sendkeys "(%^s)"

Bon maintenant, le coup de explorer c'est une tres bonne idee sauf que ca ne
marche pas:
Set ws = CreateObject("WScript.Shell")
While Not ws.AppActivate("explorer")
wend
ws.sendkeys "(%^s)"

par contre si je remplace "explorer" par "bloc-notes" et que je demarre
notepad avant d'executer le script, la ca marche.

Connais-tu donc le moyen de travailler sur "explorer"?

mais peut etre que explorer est un process et non une application "fenetre"
et donc ce n'est pas possible (elle n'a pas de titre) !!

Au pire je lance une appli bidon "notepad" par exemple et je la referme
ensuite mais comment refermer une application???
Enfin c'est pas terrible quand meme de faire ca, je prefere ton idee de
travailler sur explorer.

merci de ton aide

"Jean-Claude BELLAMY" a écrit dans le
message de news:
Dans le message news:41bec2e1$0$22326$ ,
Rod s'est ainsi exprimé:

j'ai un programme qui demarre en meme temps qui demarre en meme temps
que windows.

Celui tourne donc en permanence.
A tout moment lorsque j'appuie sur "ctrl+alt+s" par exemple, il
demarre l'enregistrement sonore de mon micro.
En appuyant sur "ctrl+alt+e", il arrete l'enregistrement.
Notez bien que je n'ai pas besoin que la fenetre du programme soit
active, il detecte tout de meme l'utilisation de ces touches.

Je souhaiterais trouver un moyen de simuler ces touches par script
(perl, vb, etc etc).

J'ai bien essayer:
sendkeys "(%^S)"

mais cela ne marche pas.
J'ai aussi trouvé grace a google des programme dos (sendkeys.exe) qui
envoit des combinaisons de touches mais à chaque fois c'est à un
programme precis. C'est à dire qu'il lui faut comme parametre le nom
d'un programme qu'il demarre, et il envoit ces touches à lui
seulement.
Connaissez vous donc un moyen de cimuler l'appui sur des touches sans
spécifier un programme précis??


Tu es OBLIGÉ de désigner un programme !
Les messages claviers sont envoyés à l'application qui a le focus, il faut
DONC savoir quelle est cette application (pour éventuellement lui redonner
le focus).

Par exemple, un cas simple et universel, la séquence <ALT><F4> ferme
l'application qui reçoit cette séquence.
Il y a donc intérêt de savoir laquelle !

les commandes "sendkey" en VBS doivent être précédées d'une commande
shell.AppActivate("xxxxxxx")
"xxxxxxx" étant tout ou partie du titre de la fenêtre prinicpale de
l'application concernée.
Il est même recommandé de faire une boucle :

exemple :

shell.Run "notepad.exe", SW_SHOWNORMAL
While not shell.AppActivate("Bloc-notes")
WScript.Sleep 100
Wend
...
shell.sendkeys "......"
...


NB: l'application concernée peut tout simplement être .. l'explorateur de
Windows ..

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *