Publié : jeu. 15/juin/2006 18:27
J'ai posté plusieurs exemples de hook, tu peux jeter un oeil!
Forums PureBasic - Français
http://forums.purebasic.com/french/
Code : Tout sélectionner
Global adresse_message,hmyHookMouse
ProcedureDLL HookMouse(code.l, wParam.l, lParam.l)
*mymsg.MOUSEHOOKSTRUCT = lParam
*position.POINT=*mymsg\pt; MSG structure holds info
Select wParam
Case #WM_LBUTTONUP
action$= "Clic G UP"
Case #WM_LBUTTONDOWN
action$= "Clic G Down"
Case #WM_RBUTTONUP
action$= "Clic D UP"
Case #WM_RBUTTONDOWN
action$= "Clic D Down"
Default
action$=""
EndSelect
If action$<>""
action$=LSet(action$,20)+LSet(Str(*position\x),10)+LSet(Str(*position\y),10)
;SetClipboardText(action$)
PokeS(adresse_message,action$)
EndIf
ProcedureReturn CallNextHookEx_(@HookMouse(), code, wParam, lParam)
EndProcedure
ProcedureDLL StartHook(hDLL,ptr_Message)
adresse_message=ptr_Message
hmyHookMouse = SetWindowsHookEx_(#WH_MOUSE , @HookMouse(), hDLL, 0)
EndProcedure
ProcedureDLL StopHook()
UnhookWindowsHookEx_(hmyHookMouse)
EndProcedure
Code : Tout sélectionner
OpenWindow(0, 0, 0, 550, 160,"RecupEvent", #PB_Window_SystemMenu)
StickyWindow(0,1)
hDLL = OpenLibrary(0, "HookDll.dll")
Message.s="TEST "
hmyHookMouse=CallFunction(0, "StartHook", hDLL,@Message)
Repeat
Event=WindowEvent()
Delay(10)
mess$=Message;GetClipboardText()
If der_mess$<>mess$
SetWindowTitle(0,mess$)
der_mess$=mess$
EndIf
Until Event=#wm_close
CallFunction(0, "StopHook")
CloseLibrary(0)
End