我正在使用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);
你可以建议我怎么做。
答案 0 :(得分:0)
在我看来,最好的方法是检查钩子事件处理程序,如果活动窗口属于你试图挂钩的进程
答案 1 :(得分:0)
因为您想要监控应用程序内的消息,所以可以使用
Application.AddMessageFilter();