Hook CBT
Publié : mer. 09/juin/2004 18:12
Salut 
voila j'essaye de faire marcher ce code:
Tant que je clique sur la fenetre ou celles du debuggeur,
ca a l'air de marcher, mais quand je clique sur une autre fenetre
ca fait planter le programme qui a créé la fenetre ...
Ca arrive même a faire planter le bureau ou la barre des taches...
Quelqu'un aurai une idée de pourquoi ca fait ca ?

voila j'essaye de faire marcher ce code:
Code : Tout sélectionner
Global cbtHook.l
Procedure CbtHook(nCode,wParam,lParam)
If nCode < 0
ProcedureReturn CallNextHookEx_(cbtHook,nCode,wParam,lParam)
EndIf
Select nCode
Case #HCBT_ACTIVATE
Debug "La fenetre "+Str(wParam)+" a été activée"
Case #HCBT_CLICKSKIPPED
Debug "Message clic souris retiré"
Case #HCBT_CREATEWND
Debug "La fenetre "+Str(wParam)+" a été crée"
Case #HCBT_DESTROYWND
Debug "La fenetre "+Str(wParam)+" a été détruite"
Case #HCBT_KEYSKIPPED
Debug "Message appui de touche "+Chr(wParam)+" a été retirée"
Case #HCBT_MINMAX
Debug "La fenetre "+Str(wParam)+" a été réduite ou agrandie"
Case #HCBT_MOVESIZE
Debug "La fenetre "+Str(wParam)+" a été déplacée ou a changée de taille"
Case #HCBT_QS
Debug "QS... le truc qui sert a rien :p"
Case #HCBT_SETFOCUS
Debug "La fenetre "+Str(wParam)+" a pris le focus et la fenetre "+Str(lParam)+" l'a perdu"
Case #HCBT_SYSCOMMAND
Debug "Commande systeme"
Default
Debug "Cas pas trop possible ^^ "
EndSelect
ProcedureReturn 0
EndProcedure
If OpenWindow(0,0,0,120,0,#PB_Window_SystemMenu|#PB_Window_TitleBar,"Pour quitter")=#FALSE
MessageRequester("","Echec de la fenetre")
End
EndIf
;Créé le hook
cbtHook = SetWindowsHookEx_(#WH_CBT,@CbtHook(),GetModuleHandle_(#NULL),0)
If cbtHook = #FALSE
MessageRequester("","Echec du cbt")
End
EndIf
;Attente de fermeture
Repeat : Until WaitWindowEvent() = #PB_EventCloseWindow
;Libere le cbt
UnhookWindowsHookEx_(cbtHook)
ca a l'air de marcher, mais quand je clique sur une autre fenetre
ca fait planter le programme qui a créé la fenetre ...

Ca arrive même a faire planter le bureau ou la barre des taches...
Quelqu'un aurai une idée de pourquoi ca fait ca ?