Domanda

sto conquistano gli tastiera in applicazione. Esigenza è quella di agganciare Tastiera in tutte thread del processo.

Ho usato API SetWindowsHookEx

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);

Il gancio è creato per tutti i thread di processo. Questo funziona bene fino chiamando esiste filo .As appena chiamando filo termina arresto del gancio di lavoro.

Esiste un modo per agganciare il processo piuttosto che thread nel processo.

È stato utile?

Soluzione

Questa stampa fine nella documentazione SDK per LowLevelKeyboardProc è fondamentale:

Questo gancio è chiamato nel contesto del thread che lo ha installato. La chiamata viene effettuata inviando un messaggio al thread che ha installato il gancio. Pertanto, il filo che ha installato il gancio deve avere un ciclo di messaggi.

In altre parole, è necessario tenere il filo vivo e il filo necessario pompare un ciclo di messaggi. Il comportamento che si vede oggi è del tutto in base alla progettazione.

Altri suggerimenti

Come da MSDN, WH__KEYBOARD ___ LL non viene applicata a livello globale specifica applicazione.

Se si desidera installare gancio per un processo di discussioni specifiche usano WH ___ TASTIERA .

Basta installare il gancio nella funzione principale. Se ne avete bisogno solo quando uno specifico thread viene eseguito, è possibile utilizzare una bandiera volatile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top