Ejemplo n.º 1
0
            // ctor runs from within a lock, and should be as quick as is possible
            public HookLifetimeManager(HookCallback callback)
            {
                Contract.Requires(callback != null);

                this.pGetMessageHook_Callback  = GetMessageHook_Callback;
                this.pSendMessageHook_Callback = SendMessageHook_Callback;
                this.Callback = callback;

                this.GetMessageHook = SetWindowsHookEx(WH_GETMESSAGE, pGetMessageHook_Callback, IntPtr.Zero, GetCurrentThreadId());
                if (this.GetMessageHook.IsInvalid)
                {
                    throw new Win32Exception();
                }
                try
                {
                    this.SendMessageHook = SetWindowsHookEx(WH_CALLWNDPROCRET, pSendMessageHook_Callback, IntPtr.Zero, GetCurrentThreadId());
                    if (this.SendMessageHook.IsInvalid)
                    {
                        throw new Win32Exception();
                    }
                }
                catch
                {
                    GetMessageHook.Dispose();
                    throw;
                }
            }
Ejemplo n.º 2
0
 public static extern IntPtr CallNextHookEx(HookSafeHandle hhk, int nCode, IntPtr wParam, IntPtr lParam);