2010-08-11 2 views
5

Voglio fare un hook che si comporterà come "evento" (e non con agilmente GetAsyncKeyState) in C# (Voglio farlo in C++). così, ho fatto una dll con questo contenuto: http://pastebin.com/yEHJKSS7.Hooker di livello basso

beh, non chiama la funzione di gestore.

a proposito, ecco come ho usato la dll:

void KeysHandler(int vkKey, int flags) 
{ 
    if(vkKey == VK_ESCAPE) 
     exit(0); 
    File << vkKey << endl << flags << endl; 
} 

int main 
{ 
    SetHandler(HandlerFunc); 
    //sleep here 
} 

edit: ora ho visto come posso "debug" nella DLL, ecco i risultati: il SetWindowsHookEx ritorna 255 - penso che sia starnge perché vale la pena di scrivere esattamente - vado a controllare nella documentazione cosa significa.

modifica: 255 è un valore restituito valido: O solo NULL (0) è errore.

Non ho idea di quale sia il problema.

modifica: beh, ora il mio amico mi ha portato una prostituta che ha funzionato per lui. e indovina ... non ha funzionato.

Ho deciso che è molto strano, quindi ho fatto GetLastError e ho ottenuto 127 - la procedura non è stata trovata. Non vedo alcuna ragione per cui non si troverà la mia procedura, aiuto per favore :(

+11

Patty la prostituta diurna di basso livello? –

+37

+1 per un titolo che mi ha fatto leggere questa domanda :) –

+12

Il titolo mi ha incuriosito, la vera domanda mi ha deluso. –

risposta

1

è la vostra principale SetHandler davvero solo chiamando seguito da sonno?

Avete bisogno di una MessageLoop in modo che tutti gli eventi siano chiamato

+0

per ora, provo la hooker sulla finestra della console. nel SetWindowHookEX ci dovrebbe essere il "message loop" della tastiera, e la procedura è anche nella dll. @Philipp & (|) Frank: Mi dispiace davvero che la mia lingua madre non sia inglese. Faccio del mio meglio. – Ohad

+0

OK, ho trovato una direzione (ho modificato, una domanda), ma non so esattamente cosa succede, perché il mio amico mi ha detto che funziona per lui. – Ohad