Функция ниже записывает «0», «z» и «1» в порядке ... но не снимает «Z» (shift-z) ... любая помощь будет оценена ...Ключ для клавиатуры ... не получает символы нижнего или верхнего регистра
__declspec(dllexport)
LRESULT CALLBACK HookProc (UINT nCode, WPARAM wParam, LPARAM lParam)
{
if ((nCode == HC_ACTION) && (wParam == WM_KEYUP))
{
// This Struct gets infos on typed key
KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam);
// Bytes written counter for WriteFile()
DWORD Counter;
wchar_t Logger[1];
switch (hookstruct.vkCode)
{
case 060: Logger[0] = L'0'; break;
case 061: Logger[0] = L'1'; break;
case 90: Logger[0] = L'z'; break;
case 116: Logger[0] = L'Z'; break;
}
// Opening of a logfile. Creating it if it does not exists
HANDLE hFile = CreateFile(L"C:\\logfile.txt", GENERIC_WRITE,
FILE_SHARE_READ, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
// put the file pointer to the end
SetFilePointer(hFile,NULL,NULL,FILE_END);
// Write the hFile typed in logfile
WriteFile(hFile,&Logger,sizeof(Logger),&Counter,NULL);
//WriteFile(hFile,&hookstruct.vkCode,sizeof(hookstruct.vkCode),&Counter,NULL);
// Close the file
CloseHandle(hFile);
}
}
Вы хотите ** синхронное ** состояние ключа модификатора. Если вы пишете клавиатурные шпионы на этом уровне качества, я не ужасно обеспокоен угрозами безопасности. – IInspectable 2015-09-30 18:18:33
Возможно, вы предложили редактировать, не проливая свой чай паранойи; и нет, я, конечно же, не пишу клавиатурных клавиатур для пользовательского пространства. – arul 2015-09-30 18:25:48