Vous pouvez utiliser SetTimer pour générer un événement WM_TIMER 20 fois par seconde ou
SetTimer(NULL, kMyTimer, 50, MyTimerCallback);
mettent ensuite en œuvre une fonction comme suit.
void CALLBACK MyTimerCallback(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
static short lastLeftAltPress = 0;
short thisLeftAltPress = GetAsyncKeyState(VK_LMENU);
if (thisLeftAltPress != 0 && lastLeftAltPress == 0)
{
CallAltHandlingCode();
}
thisLeftAltPress = lastLestAltPress;
// Handling code for other keys goes here.
}
Cela sondage par le clavier tous 50ms pour savoir si la touche alt gauche vient d'être pressé puis appeler votre code de manipulation. Si vous voulez tirer le gestionnaire lorsque son libéré alors vous utilisez ce qui suit l'instruction if
if (thisLeftAltPress == 0 && lastLeftAltPress != 0)
ou si vous voulez juste pour voir si elle est en baisse, alors vous ne
if (thisLeftAltPress != 0)
Les docs pour GetAsyncKeyState faites l'état que vous pouvez vérifier si le bit le plus bas est défini pour voir si la clé vient d'être pressée mais il indique également que cela peut échouer de manière inattendue dans des environnements multithread. Le schéma ci-dessus devrait toujours fonctionner.