SDL_Event en dehors de la fenêtre
Résolu/Fermé
Utilisateur anonyme
-
Modifié par EchoIsON le 28/06/2016 à 01:00
Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 - 28 juin 2016 à 16:11
Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 - 28 juin 2016 à 16:11
A voir également:
- SDL_Event en dehors de la fenêtre
- Fenetre qui s'ouvre en dehors de l'écran - Guide
- Raccourci agrandir fenetre - Guide
- Fenêtre - Guide
- Fenetre privée - Guide
- Mcafee fenetre intempestive - Accueil - Piratage
1 réponse
Sugel
Messages postés
4076
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
725
Modifié par Sugel le 28/06/2016 à 01:26
Modifié par Sugel le 28/06/2016 à 01:26
Salut !
Tu peux pas faire ça avec la SDL, c'est l'OS qui gère la répartition des inputs aux applications (sous windows, sous linux ça marche pas exactement comme ça).
Tu peux utiliser cette fonction de l'API windows pour capturer les frappes clavier de tout le système:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa?redirectedfrom=MSDN
un type a fait ça bien en C# ici:
https://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
La même en C :
https://www.unknowncheats.me/forum/c-and-c/83707-setwindowshookex-example.html
Réécrit sans cancer, ça donne :
Avant d'écrire un message, pensez que nous sommes là par passion, et par espoir de vous la communiquer: Si c'est pas génial, ça !
Tu peux pas faire ça avec la SDL, c'est l'OS qui gère la répartition des inputs aux applications (sous windows, sous linux ça marche pas exactement comme ça).
Tu peux utiliser cette fonction de l'API windows pour capturer les frappes clavier de tout le système:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa?redirectedfrom=MSDN
un type a fait ça bien en C# ici:
https://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
La même en C :
https://www.unknowncheats.me/forum/c-and-c/83707-setwindowshookex-example.html
Réécrit sans cancer, ça donne :
#include <Windows.h> HHOOK _hook; LRESULT __stdcall HookCallback(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode >= 0 && wParam == WM_KEYDOWN) { KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT*)lParam); if (kbdStruct.vkCode == VK_F1) puts("F1 is pressed!"); } return CallNextHookEx(_hook, nCode, wParam, lParam); } void SetHook() { if (!(_hook = SetWindowsHookEx(WH_KEYBOARD_LL, HookCallback, NULL, 0))) FAIL("Failed to install keyboard hook!"); }
Avant d'écrire un message, pensez que nous sommes là par passion, et par espoir de vous la communiquer: Si c'est pas génial, ça !
28 juin 2016 à 15:34
J'ai vu sur d'autres forums la fonction GetKeyState de l'API Windows, est-ce-qu'elle permet de faire la même chose ?
28 juin 2016 à 16:11
Ça permet de check l'état d'une touche, oui, mais pas d'avoir un signal quand elle est appuyée.
Tu peux obtenir un truc vaguement équivalent avoir un boucle qui appelle d'API sans arrêt, mais c'est une très mauvaise idée.