public void unhook()
 {
     if (globalKeyboardHook.callbackDelegate == null)
     {
         return;
     }
     globalKeyboardHook.UnhookWindowsHookEx(this.hhook);
     globalKeyboardHook.callbackDelegate = (globalKeyboardHook.keyboardHookProc)null;
 }
        public void hook()
        {
            if (globalKeyboardHook.callbackDelegate != null)
            {
                throw new InvalidOperationException("Can't hook more than once");
            }
            IntPtr hInstance = globalKeyboardHook.LoadLibrary("User32");

            globalKeyboardHook.callbackDelegate = new globalKeyboardHook.keyboardHookProc(this.hookProc);
            this.hhook = globalKeyboardHook.SetWindowsHookEx(13, globalKeyboardHook.callbackDelegate, hInstance, 0U);
            if (this.hhook == IntPtr.Zero)
            {
                throw new Win32Exception();
            }
        }
 private static extern IntPtr SetWindowsHookEx(int idHook, globalKeyboardHook.keyboardHookProc callback, IntPtr hInstance, uint threadId);
 public globalKeyboardHook()
 {
     this.khp = new globalKeyboardHook.keyboardHookProc(this.hookProc);
     this.hook();
 }