private void StartHookMessages() { GC.KeepAlive(this); lock(this) { if (_keyboardHookHandle != IntPtr.Zero) return; // if (_thisProcessID == 0) // Win32Calls.GetWindowThreadProcessId(new HandleRef(_control, _control.Handle), out _thisProcessID); KeyboardHookObject obj = new KeyboardHookObject(this); Win32Calls.HookProc keyboardHookProc = new Win32Calls.HookProc(obj.Callback); _keyboardHookRoot = GCHandle.Alloc(keyboardHookProc); _keyboardHookHandle = Win32Calls.SetWindowsHookEx(Win32Calls.WH_KEYBOARD, keyboardHookProc, (IntPtr)0, Win32Calls.GetCurrentThreadId()); } }
private void StartHookMessages() { GC.KeepAlive(this); lock (this) { if (_keyboardHookHandle != IntPtr.Zero) { return; } // if (_thisProcessID == 0) // Win32Calls.GetWindowThreadProcessId(new HandleRef(_control, _control.Handle), out _thisProcessID); KeyboardHookObject obj = new KeyboardHookObject(this); Win32Calls.HookProc keyboardHookProc = new Win32Calls.HookProc(obj.Callback); _keyboardHookRoot = GCHandle.Alloc(keyboardHookProc); _keyboardHookHandle = Win32Calls.SetWindowsHookEx(Win32Calls.WH_KEYBOARD, keyboardHookProc, (IntPtr)0, Win32Calls.GetCurrentThreadId()); } }