SendKeys : quelle chaine de caractère pour touche "Windows" - VB/VBA/VBS - Programmation
Marsh Posté le 28-04-2003 à 09:40:13
ça fait pareil niveau utilisateur pour la pression simple sur la touche Win, mais si tu fais Ctrl+Esc+E t'as pas l'explorateur, alors que Win+E tu l'as
Marsh Posté le 28-04-2003 à 09:44:21
antp a écrit : ça fait pareil niveau utilisateur pour la pression simple sur la touche Win, mais si tu fais Ctrl+Esc+E t'as pas l'explorateur, alors que Win+E tu l'as |
Mais nan, mais c'est parceque t'es pas assez rapide
A priori, doit pas y avoir de code derrière la touche windows, je pense que c'est plutôt une macro géré par le processeur du clavier. (oui oui, y'a un processeur dans un clavier)
Marsh Posté le 28-04-2003 à 09:45:32
MagicBuzz a écrit : |
parce que tu y arrives, toi ?
Je pense pas que ce soit géré par le clavier, c'est comme les touches multimedia, ce sont des codes différents des touches habituelles...
Marsh Posté le 28-04-2003 à 09:54:31
antp a écrit : |
Ben nan, j'y arrive pas, mais moi non plus je suis pas assez rapide
Sinon, ouais, pour les codes différents...
Mais euh... Normalement, un clavier, ça envoie bien un code ASCII non ?
Hors, un clavier standard permet déjà de couvrir l'intégralité du ASCII étendu (soit 1 byte), sans pour autant en générer un seul de plus.
Donc j'ai du mal à concevoir que les contrôlleurs claviers de 386 par exemple aient prévu de passer sur 2 bytes pour gérer des touches qui n'existaient pas à l'époque. Hors un clavier Windows/multimédia fonctionne très bien sur un tel PC.
Marsh Posté le 28-04-2003 à 09:56:00
Sinon tu peux utiliser AutoIt ou AutoItX (controle Active X) pour simuler cette touche !
http://www.hiddensoft.com/AutoIt/
Marsh Posté le 28-04-2003 à 09:57:13
Minute là papillon, les codes ne sont pas les même suivant si tu intercepte KeyPress (code ascii) ou KeyUp/KeyDown (code touche clavier)
Le code clavier renvoyés pour la touche Windows de gauche est 91 (puis 92 et 93 pour les touches de droite: Windows et menu contextuel).
Marsh Posté le 28-04-2003 à 10:00:42
Ne t'emmerde pas et utilise AutoItX
Tu peux simuler les touches Windows via les paramètres LWIN et RWIN, y'a 2 vbs d'exemples livrés avec !
Marsh Posté le 28-04-2003 à 10:01:41
MagicBuzz a écrit : Mais euh... Normalement, un clavier, ça envoie bien un code ASCII non ? |
Aucune idée... En tout cas sous Windows tu reçois plus qu'un byte... t'as un int contenant le n° de la touche + une partie d'un autre param pour des infos supplémentaires
edit: bah voilà, c'est ce que dit Drasche, y a deux events différents
Marsh Posté le 28-04-2003 à 10:06:00
drasche a écrit : Minute là papillon, les codes ne sont pas les même suivant si tu intercepte KeyPress (code ascii) ou KeyUp/KeyDown (code touche clavier) |
OK. Ben en regardant de plus près à quoi ressemble la table ASCII, on voit que 91 = [
Hors, [ = ESC + 40h
Hors, CTRL, si mes souvenir sont bon, c'est bien un offset de 40h (et shift de 20h)
Donc c'est bien ça.
Seulement, lorsqu'on appuie sur les touches shift, ctrl, alt et alt gr, ça envoie un second byte contenant leurs status. (en fait, quand on appuie sur une touche, le clavier envoie 2 bytes, un pour la touche du clavier, et l'autre pour les touches de contrôle).
Donc le drivers clavier, pour faire la différence entre le pressage d'une touche à la con ou d'une combinaisont normale, il a juste à vérifier si une touche de contrôle a été appuiée.
Ca fait combien le code ASCII de Windows + E ?
Moi je vote pour c0h
Marsh Posté le 28-04-2003 à 10:07:46
MagicBuzz a écrit : |
t'avais dit 141h
Marsh Posté le 28-04-2003 à 10:09:39
La touche Windows n'a pas l'air d'être détectée par le OnKeyPress, mais juste par le OnKeyDown/OnKeyUp où on a les codes 91 & 92
Par contre [ donne OnKeyPress = 91 (ASCII), mais OnKeyDown = 221 (du moins sur clavier belge, sur le clavier français il est sur une autre touche donc le code sera différent)
la valeur élevée est due à la présence du ctrl & alt (= altgr) je suppose
Marsh Posté le 28-04-2003 à 10:14:11
antp a écrit : |
Vi, mais je m'étais planté
J'avais fait un offset avec ctrl et puis j'avais écrit en décimal au lieu d'héxa
Marsh Posté le 28-04-2003 à 10:17:26
j'arrive pas à intercepter le code du ctrl+esc
Marsh Posté le 28-04-2003 à 10:20:04
Bah... Chais pas.
EN tout cas, certain, ESC = 27 (ou 1Bh) et il me semble que CTRL = offset de 40h mais j'en suis pas certain.
Marsh Posté le 28-04-2003 à 10:51:41
|
j'ai la même chose avec ou sans Ctrl
Marsh Posté le 28-04-2003 à 10:59:31
ha ? ben alors ça fait pas d'offset
je croyais
doit y avoir que shif qui fait un eoffset en fin de compte
Marsh Posté le 28-04-2003 à 11:17:51
Ouais parce que le code ASCII de 'a' est pas le même que 'A', c'est comme '^A' qui vaut 1, c'est son code ASCII, donc y a un décalage au niveau de l'ASCII mais c'est tout, dans le KeyDown Shift+A = A
Marsh Posté le 28-04-2003 à 09:36:03
Je sais qu'avec Sendkeys on mime les événements claviers mais quelle est la chaine de caractère qui correspond à la touche "Windows" du clavier ?