Multithreading 在我的线程上下文中调用`SetWindowsHookEx`函数
为了在GUI应用程序中使用Multithreading 在我的线程上下文中调用`SetWindowsHookEx`函数,multithreading,winapi,keylogger,setwindowshookex,Multithreading,Winapi,Keylogger,Setwindowshookex,为了在GUI应用程序中使用SetWindowsHookEx,通常需要在发生事件时在线程中调用函数 因此,例如,如果我正在制作一个软件来显示系统上按下的所有键,我希望我的GUI应用程序能够在按下键时调用函数AddKeyToList(int vkeycode) 我不是Windows内部结构方面的专家,但如果我正确理解了文档,则由SetWindowsHookEx安装的钩子将在导致钩子事件的线程上下文中被调用。因此,为了实现我所描述的目标,需要: 创建一个包含钩子函数的DLL,并在其中创建一个共享内存区
SetWindowsHookEx
,通常需要在发生事件时在线程中调用函数
因此,例如,如果我正在制作一个软件来显示系统上按下的所有键,我希望我的GUI应用程序能够在按下键时调用函数AddKeyToList(int vkeycode)
我不是Windows内部结构方面的专家,但如果我正确理解了文档,则由SetWindowsHookEx
安装的钩子将在导致钩子事件的线程上下文中被调用。因此,为了实现我所描述的目标,需要:
AddKeyToList
函数Qt
的东西,这甚至是不可能的
是否有任何库(最好是开源库)已经实现了这些机制,并使我能够使用“facade”,例如,每当出现who\u KEYBOARD\u LL
时,它将在线程上下文中调用函数
我的分析是正确的,还是有更简单的方法来实现我所描述的
Qt
库能帮我完成这项任务吗?这已经是whu键盘挂钩的默认行为。在调用SetWindowsHookEx()的同一线程中调用回调。该线程还必须泵送一个消息循环,以便在使用UI线程时自动正常工作。回调代码也不需要存在于DLL中,它不是需要DLL注入的全局钩子
不需要做额外的工作。+1用于提及关于不需要在DLL中进行回调的未记录事实