2010-02-01 19 views
0

gMsgHook = SetWindowsHookEx (WH_KEYBOARD_LL, GetMsgHookProc, ghInstDll, 0);comment envoyer, clavier message miroir pour modifier le contrôle

.......

extern "C" HOOK_DLL_API LRESULT CALLBACK GetMsgHookProc(int nCode, WPARAM wParam, LPARAM  lParam) 
{ 
if (nCode < 0){ 
    CallNextHookEx(gMsgHook, nCode, wParam, lParam); 
} 

KBDLLHOOKSTRUCT *dl = (KBDLLHOOKSTRUCT*)wParam; 

if (nCode >= HC_ACTION){ 
    // message mirror to hEdit1 
    // doesnt typing work 
    SendMessage(hEdit1, wParam, wParam, lParam); 
} 

    return CallNextHookEx(gMsgHook, nCode, wParam, lParam); 
} 

Répondre

0

Il y a de nombreuses erreurs dans l'extrait de code. D'abord, le KBDLLHOOKSTRUCT qui est passé au crochet est dans lParam, pas wParam. wParam contient le message de la fenêtre. Deuxièmement, vous passez le paramètre lParam tel quel au contrôle d'édition. Vous devez construire le lParam approprié (voir la documentation de WM_KEYDOWN, WM_KEYUP, etc.). Troisièmement, vous passez wParam au hook proc (qui est le message) en tant que wParam pour le message de clavier régénéré - ce devrait être le code de clé virtuelle que vous obtenez à partir de KBDLLHOOKSTRUCT. Quatrièmement, si nCode < 0, vous finirez par appeler deux fois CallNextHookEx.

+0

merci Michael je l'essaie – gre