将Keyboard挂钩安装到特定进程

时间:2014-01-18 05:57:23

标签: c# windows

我正在使用SetWindowsHookEx()函数在C#中为我的远程桌面应用程序安装键盘钩子。我启动钩子的代码是

private void Start()
{
    IntPtr handle = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
    Proc = new HookProc(CallBackHook);
    IntPtr HookHandle = SetWindowsHookEx(HookType.WM_KEYBOARD_LL, Proc, handle, 0);
    if (HookHandle == null || HookHandle == IntPtr.Zero)
    {
        Console.Write("Error while installing hook");
    }
}

代码工作正常并捕获所有进程的键盘活动,但如何仅为当前进程限制它。我也试过指定线程ID,但不会工作。


HookHandle = SetWindowsHookEx(HookType.WM_KEYBOARD_LL, Proc, handle, Thread.CurrentThread.ManagedThreadId);

你可以建议我怎么做。

2 个答案:

答案 0 :(得分:0)

在我看来,最好的方法是检查钩子事件处理程序,如果活动窗口属于你试图挂钩的进程

答案 1 :(得分:0)

因为您想要监控应用程序内的消息,所以可以使用

         Application.AddMessageFilter();