Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

companyman Achat - Vente Informatique : science-pro, samz02 Achat - Vente Divers : patatozz, 2 utilisateurs anonymes et 24 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[Nimporte quel langage] Simulation de touche CTRL + ALT + F1

 
n°18528
Rantanplan
Modo pas rigolo !
Profil : Fossile
Posté le 22-04-2007 à 10:47:45  profilanswer
 

:hello:
 
Je souhaite réaliser un tt petit programme qui simule l'appui des touches CTRL + ALT + F1 (en meme temps)
 
Je suppose que c'est possible mais c'est pour le boulot, donc faut que ce soit dans un langage non propriétaire (un fichier .bat par ex. me conviendrait parfaitement)
 
Si vous avez des propals a me faire :p


---------------
[:rantanplan]
n°18532
cmoila
Profil : Membre
Posté le 24-04-2007 à 13:37:03  profilanswer
 

Pour simuler une frappe de touche tu dois envoyer des messages par PostMessage().
Normalement les messages sont dans l'ordre d'evénement : WM_KEYDOWN , WM_KEYUP et WM_CHAR
mais si la touche ALT est appuyée cela devient une commande "systeme" les evenements sont :
WM_SYSKEYDOWN, WM_SYSKEYUP, WM_SYSCHAR
 
l'evenement en WM_xCHAR n'est envoyé que si la touche est un caractere alphanumerique avec un character code (ansi, unicode). Donc pas dans le cas d'une touche fonction comme F1
 
Ce que tu dois faire reellement dépend de la fonction qui va traiter le message recu. Normalement les actions s'executent au relaché de la touche ou du bouton souris. peut etre qu'un simple WM_SYSKEYUP suffit (a verifier).
 
Dans les messages WM_xKEYx le code touche est un "Virtual-Key Code" différent pour chaque touche. Donc faut envoyer un message pour la touche CTRL et un autre pour F1 :
 
PostMessage(NULL, WM_SYSKEYDOWN, VK_CONTROL, NULL); // remarque que je ne traite pas le lParam ca me semble pas utile
PostMessage(NULL, WM_SYSKEYDOWN, VK_F1, NULL);  
PostMessage(NULL, WM_SYSKEYUP, VK_F1, NULL);  
PostMessage(NULL, WM_SYSKEYUP, VK_CONTROL, NULL);  
 
 


Aller à :
Ajouter une réponse