——.dll
void SetKebordHook()
{
DWORD dwError = 0 ;
MyLogs(_T("安装钩子"));
HWND hWnd;
while(TRUE)
{
hWnd = ::FindWindow(NULL, _T("HookTarget"));
if (NULL != hWnd)
{
MyLogs(_T("找到窗口"));
break;
}
Sleep(100);
}
DWORD dwThreadID = GetWindowThreadProcessId(hWnd,NULL);
MyLogs(_T("进程ID为%d"),dwThreadID);
HHOOK hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, theApp.m_hInstance, dwThreadID);
if (NULL == hHook)
{
dwError = GetLastError();
MyLogs(_T("SetWindowsHookEx失败,错误码:%d"),dwError);
}
}
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
//MyLogs(_T("进入钩子"));
if(((DWORD)lParam&0x80000000) && (HC_ACTION==code))
{
if ((wParam >= '0' && wParam <= '9')
|| (wParam >= 'A' && wParam <= 'Z'))
{
TCHAR szBuf[2] = {0};
szBuf[0] = (TCHAR)wParam;
//MyLogs(szBuf);
AfxMessageBox(szBuf);
}
}
return CallNextHookEx(NULL, code, wParam, lParam);
}