Peut -on inhiber l'action du bouton Print Screen ?
( j'ai des problèmes temps réel sur mon appli qui gère un port série
lorsqu'on reste appuyer sur ce bouton.
Je suis sous XP Pro Service Pack 1
Merci
Peut -on inhiber l'action du bouton Print Screen ?
( j'ai des problèmes temps réel sur mon appli qui gère un port série
lorsqu'on reste appuyer sur ce bouton.
Je suis sous XP Pro Service Pack 1
Merci
salut, tu peux faire ca avec un hook global clavier. Voir SetWindowsHookEx et WH_KEYBOARD. Message à intercepter : VK_SNAPSHOT
après un rapide test pour voir si je disais pas de bétise (j'ai bien fait ...), il faut faire un hook sur le low level keyboard (WH_KEYBOARD_LL).
Allez, comme je l'ai fait, je te donne mon code de la DLL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 #include <windows.h> #define WH_KEYBOARD_LL 13 typedef struct { DWORD vkCode; DWORD scanCode; DWORD flags; DWORD time; ULONG_PTR dwExtraInfo; } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; HINSTANCE moduleCourant; HHOOK hookClavier; BOOL WINAPI DllMain (HINSTANCE hDll, DWORD dwReason, LPVOID Reserved) { if (dwReason == DLL_PROCESS_ATTACH) { moduleCourant = hDll; } return 1; } LRESULT CALLBACK fonctionIntercepteClavierLowLevel (int nCode, WPARAM wParam, LPARAM lParam) { if(nCode >= 0) { KBDLLHOOKSTRUCT kbStruct = *((KBDLLHOOKSTRUCT *)lParam); switch(wParam) { case WM_KEYDOWN: if (kbStruct.vkCode == VK_SNAPSHOT) return 1; } } return CallNextHookEx(hookClavier, nCode, wParam, lParam); } extern "C" int __stdcall installeLeHookClavier() { if( !hookClavier ) { hookClavier = SetWindowsHookEx(WH_KEYBOARD_LL, fonctionIntercepteClavierLowLevel, moduleCourant, 0); } return (int) hookClavier; } extern "C" void __stdcall ArreteLeHookClavier() { if(hookClavier) { UnhookWindowsHookEx(hookClavier); hookClavier = 0; } }
Merci pour ta précieuse aide
c'est suffisant pour contourner mon pb
Partager