На основе примера написал следующий глобальный хук, который перехватывает нажатие клавиш и записывает их у файл:
LRESULT CALLBACK HookProc (int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION && !(lParam & 0x80000000)) {
pFile = fopen("C:\\log.txt","a+");
time_t timer;
time(&timer);
char* p = ctime(&timer);
p[strlen(p) — 1] = 0;
TCHAR szKeyName[20];
GetKeyNameText(lParam,szKeyName,19);
for (int i = 0; i < (lParam & 0x0000FFFF); i++)
fprintf(pFile,"%s — key: %s, num is %d\n",p,szKeyName,lParam);
fclose(pFile);
}
return CallNextHookEx(hhookKbd,nCode,wParam,lParam);
}
В результате у файл пишется следующая инфа:
Sat Mar 28 22:16:56 2009 — key: =, num is 17629185
Sat Mar 28 22:16:58 2009 — key: =, num is 17629185
Sat Mar 28 22:16:59 2009 — key: =, num is 17629185
Sat Mar 28 22:17:00 2009 — key: =, num is 17629185
Sat Mar 28 22:17:01 2009 — key: =, num is 17629185
Sat Mar 28 22:17:02 2009 — key: =, num is 17629185
Sat Mar 28 22:17:03 2009 — key: =, num is 17629185
Sat Mar 28 22:17:04 2009 — key: =, num is 17629185
Sat Mar 28 22:17:05 2009 — key: =, num is 17629185
Sat Mar 28 22:17:06 2009 — key: =, num is 17629185
Sat Mar 28 22:17:07 2009 — key: =, num is 286064641
Sat Mar 28 22:17:08 2009 — key: =, num is 17629185
Sat Mar 28 22:17:09 2009 — key: =, num is 17629185
Но я не нажимал никаких клавиш!!!! Клавиша "=" как бы сама нажимается! В чем подвох?