La fonction ci-dessous enregistre les "0", "z" et "1" ok ... mais ne capture pas le "Z" (shift-z) ... toute aide serait appréciée ...Crochet du clavier ... n'obtenant pas les caractères majuscules ou minuscules
__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);
}
}
Quatre ans de retard, mais merci pour cette réponse. M'aider :) :) –
J'ajouterais à cette réponse que si vous allez travailler dans un environnement multilingue, vous pourriez avoir des problèmes plus graves, car votre processus et votre source de processus de kbd peuvent avoir un langage différent. Par exemple. Votre processus a Eng actif, et si l'utilisateur passe à Rus dans un autre processus et appuie sur "Й" - vous pouvez obtenir "Q" parce que c'est la même touche physique sur le clavier. Voir aussi cette réponse: http://stackoverflow.com/questions/10718009/difference-between-wh-keyboard-and-wh-keyboard-ll –
@IvanDanilov: Vous confondez * les codes de balayage * avec les * codes de touches virtuelles *. 'Й' et' Q' peuvent avoir le même code de balayage, puisqu'ils partagent la même clé physique sur un clavier. Cela n'implique pas de codes de clé virtuelle identiques. – IInspectable