获取 Metro 应用的键盘挂钩的线程 ID
本文关键字:线程 ID 键盘 Metro 应用 获取 | 更新日期: 2023-09-27 18:34:46
我正在尝试从经典控制台应用程序在 Metro 应用程序上设置低级键盘挂钩。我的问题是地铁应用程序无法与全局钩子挂钩。所以我试图将钩子连接到特定的线程,但我找不到它。
现在这就是我所拥有的:
private IntPtr SetHook(LowLevelKeyboardProc proc, ProcessModule tabModule)
{
Debug.WriteLine("INFO HOOK : Setting hook " + tabModule.ModuleName.ToString());
var result = SetWindowsHookEx(WH_KEYBOARD, proc, GetModuleHandle(tabModule.ModuleName), 0);
Debug.WriteLine("INFO BACK : Hook handle = " + result);
return result;
}
问题是在 SetWindowsHookEx 函数中,0 表示全局钩子,我应该用线程 ID 替换它。当我尝试通过以下方式获取线程 ID 时:
ProcessThreadCollection threadList = processList[0].Threads;
Debug.WriteLine("Threads = " + threadList.Count);
foreach (ProcessThread thread in threadList)
Debug.WriteLine("Thread = " + thread.Id);
我通过(当然(列表获得了 40 个线程的计数。
我的问题是:我可以使用什么线程作为 SetWindowsHookEx 最后一个参数来挂接来自 Windows 应用商店应用程序的键盘输入。
谢谢!
使用WH_KEYBOARD_LL
而不是WH_KEYBOARD
和LowLevelKeyboardProc,您可以为所有进程挂钩键盘,包括另一个商店应用程序。