A
Arnold
Hi,
I want to make a Global CBT Hook, but the CallBack Method is never raised.
SetWindowsHookEx return me a Handle to the Hook, but when i try to uninstall
the hook the UnhookWindowsHookEx generate an error (1404: Invalid hook
handle.). A part of code is this:
Install Hook:
....
CBTCallBack = new GlobalHook.GlobalHook.HookProc(CBTCallBackEventHandler);
CBTHandle =
GlobalHook.SetWindowsHookEx(GlobalHook.HookType.WH_CBT,CBTCallBack,
Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
....
CallBack Function:
....
private int CBTCallBackEventHandler(int nCode, IntPtr wParam, IntPtr lParam)
{
CBTACTIVATESTRUCT WndData;
if(nCode >= 0)
{
if(wParam.ToInt32() == 5)
{
WndData =
(CBTACTIVATESTRUCT)Marshal.PtrToStructure(lParam,typeof(CBTACTIVATESTRUCT));
if(this.Activated != null)
{
Activated(this,new CBTEventArgs(WndData.hWndActive,"none"));
}
}
}
return GlobalHook.CallNextHookEx(this.CBTHandle,nCode, wParam, lParam);
}
....
Sombody can help me?
Thanks!
I want to make a Global CBT Hook, but the CallBack Method is never raised.
SetWindowsHookEx return me a Handle to the Hook, but when i try to uninstall
the hook the UnhookWindowsHookEx generate an error (1404: Invalid hook
handle.). A part of code is this:
Install Hook:
....
CBTCallBack = new GlobalHook.GlobalHook.HookProc(CBTCallBackEventHandler);
CBTHandle =
GlobalHook.SetWindowsHookEx(GlobalHook.HookType.WH_CBT,CBTCallBack,
Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);
....
CallBack Function:
....
private int CBTCallBackEventHandler(int nCode, IntPtr wParam, IntPtr lParam)
{
CBTACTIVATESTRUCT WndData;
if(nCode >= 0)
{
if(wParam.ToInt32() == 5)
{
WndData =
(CBTACTIVATESTRUCT)Marshal.PtrToStructure(lParam,typeof(CBTACTIVATESTRUCT));
if(this.Activated != null)
{
Activated(this,new CBTEventArgs(WndData.hWndActive,"none"));
}
}
}
return GlobalHook.CallNextHookEx(this.CBTHandle,nCode, wParam, lParam);
}
....
Sombody can help me?
Thanks!