关于SetWindowsHookEx
HHOOK g_hhook = NULL;
//回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
wchar_t buf[128] = {0};
wsprintf(buf,_T("nCode:%d"), nCode);
MessageBoxW(NULL, buf,L"",MB_OK);
return ::CallNextHookEx(g_hhook, nCode, wParam ,lParam);
}
BOOL InstallHook()
{
//获得窗口句柄
HWND hWnd = FindWindow(_T("Notepad"),NULL);
if (NULL == hWnd)
{
MessageBoxW(NULL,_T("获得窗口句柄为空"), L"", MB_OK);
return FALSE;
}
//获得线程ID
DWORD dwThreadId = 0;
dwThreadId = GetWindowThreadProcessId(hWnd,NULL);
if (dwThreadId == 0)
{
MessageBoxW(NULL,_T("获得窗口线程句柄不正"), L"", MB_OK);
return FALSE;
}
g_hhook = SetWindowsHookExA(WH_KEYBOARD, KeyboardProc, GetModuleHandleA("本Dll的名字"), dwThreadId);
if (NULL == g_hhook)
{
//MessageBoxW(_T("SetWindowsHookExA Fail"));
int err = GetLastError();
wchar_t buf[128] = {0};
wsprintf(buf,_T("LGLE:%d"), err);
MessageBoxW(NULL, buf,L"",MB_OK);
}
return TRUE;
}
在dllmain中调用了InstallHook这个函数进行HOOK
现在我想把此dll注入到记事本中,用其它的方法注入的。而不是通过另一个程序调用InstallHook这个函数
我通过调试发现走到这一步(if (NULL == g_hhook))的时候都没有问题,但是,就是没有HOOK 成功,用别的工具看不到消息钩子。按键盘也不弹框。便是dll己经注入了
怎么回事儿,请指点一下。
...全文
相关推荐
HOOK之SetWindowsHookEx
HOOK之SetWindowsHookEx教程,HOOK之SetWindowsHookEx教程,HOOK之SetWindowsHookEx教程,HOOK之SetWindowsHookEx教程,HOOK之SetWindowsHookEx教程,讲解的不错,有兴趣可以看看!!!!!
SetWindowsHookEx实现DLL注入
SetWindowsHookEx实现DLL注入
SetWindowsHookEx Hook demo
SetWindowsHookEx 64位,或32位,不同,需要编译各自的库、SetWindowsHookEx 64位,或32位,不同,需要编译各自的库、
SetWindowsHookEx进程dll注入
SetWindowsHookEx进程dll注入
c# SetWindowsHookEx 钩子
c# SetWindowsHookEx 钩子 demo


进程/线程/DLL
