PBprogger hat geschrieben:Ich hab jetzt einen globalen Hook proggen können, geht sogar ohne Window...
Aber da ist ein Problem, wParam ist immer bei Button-Down 256 und bei Button-Up 267. Sollte das nicht der ASCII-Wert von der Taste sein? Was hab ich falsch gemacht?
Eine globale Hook-Prozedur steht meines Wissens immer in einer DLL !
wParam gibt nicht den Ascii-Code sondern den virtuellen Tastencode an.
So machst Du einen globalen Hook
Code: Alles auswählen
;DLL-Code - Dll heisst Hook.dll
Macro TestBit(value,bit)
(value>>bit&1)
EndMacro
ProcedureDLL HookProc(nCode.l,wParam.l,lParam.l)
If wParam>=0
If wParam=#VK_ESCAPE
If TestBit(lParam,31)= 0
MessageRequester("Message","ESC was pressed.")
EndIf
EndIf
EndIf
ProcedureReturn CallNextHookEx_(hook,nCode,wParam,lParam)
EndProcedure
Code: Alles auswählen
;Pb_Programm
Global hook
Global Quit
OpenWindow(0,0,0,200,200,"Test-Window",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
hModul = OpenLibrary(0,"Hook.dll")
HookProc = GetFunction(0,"HookProc")
hook=SetWindowsHookEx_(#WH_KEYBOARD,HookProc,hModul,0)
Repeat
If Quit=1
Debug 1
EndIf
Until Quit=1 Or WaitWindowEvent()=#WM_CLOSE
CloseLibrary(0)