Delphi:Touche clavier pour activer un bouton

Fermé
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - Modifié par linkcr15 le 14/07/2011 à 15:29
 play92 - 2 sept. 2012 à 19:22
Bonjour,

Je suis en train de créer un programme en Delphi. Je souhaite programmer un bouton du clavier (genre F11) qui effectuerai une action dans mon programme même si mon programme n'est pas en premier plan. Est-ce que cela est possible? Si oui, comment le faire svp?

Merci d'avance pour vos réponses!

5 réponses

Bonjour, linckrc15
Je ne sais pas si depuis tu as trouvé une réponse , mais au cas-ou voici une solution. Dans un TIMER tu mets :
If GetAsyncKeyState(122)<>0 then ' ta commande '; //122=F11
Règle l'Inteval du timer à 200 pour une réaction rapide et voila ça marche même si ton appli n'a pas le focus.
3
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
14 juil. 2011 à 15:56
Rien n'est impossible, mais ça c'est pas très simple...
Je crois que le seul moyen c'est de mettre un hook clavier en place, via SetWindowHook avec Wh_Keyboard et une KeyboardProc...
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
14 juil. 2011 à 15:57
Euh oué j'aimerai bien mais j'ai rien compris! ^^
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
14 juil. 2011 à 16:11
Je vais essayer d'être plus clair :
La fonction SetWindowHook sert à insérer une procedure dans la chaine des procédures appelées lors d'un évènement, dans le cas présent un évènement clavier, donc à chaque frappe d'une touche du clavier, quelque soit l'application focus, la procédure que tu met en place est appelée, puis celle-çi appelle la suivante etc...

Définition de SetWindowHookEx :
HHook SetWindowHookEx( 
   int idHook,      // type de hook = Wh_Keyboard    
   HOOKPROC lpfn,	// adresse de la procedure à appeler
   HINSTANCE hMod,	// handle de l'application (Application.Handle)   
   DWORD dwThreadId // Handle du thread de la procedure- tu peux mettre 0   
);	


Tu trouveras cette définition dans le win32sdk...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
18 juil. 2011 à 17:50
Ok merci quand même mais je crois que je vais pas y toucher. Est-ce qu'il existe un logiciel qui permettrai d'utiliser un programme comme s'il était au premier plan alors qu'il est en second plan?
0