Page 2 sur 2

Publié : jeu. 15/juin/2006 18:27
par nico
J'ai posté plusieurs exemples de hook, tu peux jeter un oeil!

Publié : jeu. 15/juin/2006 18:30
par nico
Et puis, si tu veux qu'un hook soit global il faut l'appeler depuis une Dll et non depuis ton prog!

Publié : ven. 16/juin/2006 7:50
par olivier
Merci Nico

Sur le coup je me suis dit SUPER, je n'avais pas essayé cela et ça devrait marché.....mais je n'y arrive pas. Je récupère bien mon message pour les clic dans ma fenetre, mais dés que j'en sort cela déconne...

Si tu as un peu de temps j'aimerais bien savoir où est mon érreur, sinon j'ai trouvé un moyen pour contourné en faisant des PostMessage_.

Bonne journée à tous

HookDll.dll

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
prog

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