线程键盘钩子(局部键盘钩子)的问题
想写游戏的改键。 先看源码(以记事本这一进程为例) (在记事本上按键A,应该显示成为其它。。)
HWND hwnd = ::FindWindow("Notepad",0); //找到记事本窗口句柄
DWORD PID=GetWindowThreadProcessId(hwnd,&PID); // 得到记事本进程ID
问题来了
SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, NULL,PID);
我要实现的是局部钩子,而不是全局的dll回调函数。(我就是不想用dll. 还没学这个。)
第三个参数,MSDN上写的意思,我理解为:要关联的这个线程,如果是全局钩子的话填dll的实例,如果是由本程序创建出来的线程则填NULL。 问题是这个进程(记事本进程)不是我创建出来的。。而我也不是全局钩子。。
(第三个参数 填 AfxGetApp()->m_hInstance 的话, 运行时错误)
说得有点乱了。 看了网上的代码,大家都是用dll来实现的。 可以不用dll来实现吗。
请问下,我的思路是不是错了? 这种情况不能用局部钩子吗?如果可以该怎么用?