我尝试从经典控制台应用程序在Metro App上设置低级键盘挂钩。 我的问题是,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 Store App的键盘输入。
谢谢!