Associer une touche de raccourci
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Associer une touche de raccourci
Salut,
Comment faire pour associer un touche de raccourci à un programme.
j'explique : lorsqu'on utilise pas le programme et que celui ci est en arrière plan, je veux obtenir, lorsque que l'on appui sur touche, une action spécifique comme mettre le prog au premier plan.
Si vous savez comment faire.
dans PB, il y a AddKeyboardShortcut(#Fenetre, Raccourci, EventID) mais ceci ne marche que si le prog est actif.
Merci d'avance
Comment faire pour associer un touche de raccourci à un programme.
j'explique : lorsqu'on utilise pas le programme et que celui ci est en arrière plan, je veux obtenir, lorsque que l'on appui sur touche, une action spécifique comme mettre le prog au premier plan.
Si vous savez comment faire.
dans PB, il y a AddKeyboardShortcut(#Fenetre, Raccourci, EventID) mais ceci ne marche que si le prog est actif.
Merci d'avance
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
La plupart des fonctions gérant l'entrée (clavier ou souris) ne renvoient une valeur pertinente que si ton application est au premier plan afin d'éviter que toutes les applications résidant en mémoire ne se mettent à réagir quand tu tape sur une touche. Il existe cependant des fonctions qui renvoient TOUJOURS la valeur du clavier et de la souris afin de gérer des cas comme celui qui t'intéresse :
Pour la souris : WindowMouseX() et WindowMouseY()
Pour le clavier : getasynckeystate_(#VK_CONTROL) par exemple
Il va falloir que tu écrive une petite boucle incluant un test de ce type. Si tu veux faire la distinction entre les frappes survenant quand ta fenêtre est active ou quand elle ne l'est pas, teste "Message = #WM_KEYDOWN" avec "WindowID = MafenetreHdl" dans une procedure Callback.
Pour la souris : WindowMouseX() et WindowMouseY()
Pour le clavier : getasynckeystate_(#VK_CONTROL) par exemple
Il va falloir que tu écrive une petite boucle incluant un test de ce type. Si tu veux faire la distinction entre les frappes survenant quand ta fenêtre est active ou quand elle ne l'est pas, teste "Message = #WM_KEYDOWN" avec "WindowID = MafenetreHdl" dans une procedure Callback.
Tout obstacle est un point d'appui potentiel.
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
j'ai fait ça :
mais ça marche pô, on fait comment pour récupérer la touche du clavier ?
j'ai utilisé la constantes pb mais à mon avis, c pas çà
Code : Tout sélectionner
OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Test")
If CreateGadgetList(WindowID())
TextGadget(1, 5, 5, 150, 15, "")
EndIf
Touche = #PB_Shortcut_A
RegisterHotKey_(WindowID(), Touche, #MOD_CONTROL, 0)
Repeat
Event = WaitWindowEvent()
If Event = #WM_HOTKEY
SetGadgetText(1, "Touche appuyée")
EndIf
Until Event = #WM_CLOSE
UnregisterHotKey_(WindowID(), Touche)
j'ai utilisé la constantes pb mais à mon avis, c pas çà
Essaye plutot ca:
Code : Tout sélectionner
OpenWindow(0, 0, 0, 200, 200, #PB_Window_ScreenCentered, "Test")
If CreateGadgetList(WindowID())
TextGadget(1, 5, 5, 150, 15, "")
EndIf
#HotKeyID = 45
RegisterHotKey_(WindowID(), #HotKeyID, #MOD_CONTROL, #PB_Shortcut_A )
Repeat
Event = WaitWindowEvent()
If Event = #WM_HOTKEY
If EventwParam() = #HotKeyID ; our id (see above)
SetGadgetText(1, "Touche appuyée")
EndIf
EndIf
Until Event = #WM_CLOSE
UnregisterHotKey_(WindowID(), #HotKeyID)
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :