我的动态链接库导出EnumWindows的回调函数__declspec(dllexport) BOOL CALLBACK EnumWindowsProcess(HWND handle,LPARAM parameter)
{
char name[MAX_PATH]={0}; GetClassName(handle,name,MAX_PATH); if (strcmp(name,TEXT("QWidget"))==0)
{
SetWindowsHookEx(WH_KEYBOARD,KeyboardProcess,Instance,GetWindowThreadProcessId(handle,0));
}
return 1;
}我的可执行程序调用API EnumWindows枚举桌面所有窗口对目标安装钩子 安装容易卸载却难请教前辈高人指点
{
char name[MAX_PATH]={0}; GetClassName(handle,name,MAX_PATH); if (strcmp(name,TEXT("QWidget"))==0)
{
SetWindowsHookEx(WH_KEYBOARD,KeyboardProcess,Instance,GetWindowThreadProcessId(handle,0));
}
return 1;
}我的可执行程序调用API EnumWindows枚举桌面所有窗口对目标安装钩子 安装容易卸载却难请教前辈高人指点
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);
通过EnumWindowsProcess(HWND handle,LPARAM parameter)的第二个参数
为回调函数传进一个动态数组来存储钩子句柄
想想觉得这么点事还要维护一个动态数组。而且回调函数里还要添加一个static局部
来做计数器。这么冗。好像很挫。
所以希望请教有没有前辈高人能想出更风骚的解决方案
我没理解你的意思。 我遍历桌面窗口 通过窗口类名定位 这里寻找的是YY。 我开10个YY 为每个YY安装一个钩子。 我没看出这代码怎么会为同一个线程安装多个钩子呢? 能不能详细解释一下? 我站的高度没你高 没看出来