2010-08-11 5 views
5

Ich möchte einen Haken machen, die wie "Ereignis" (und nicht mit Agly GetAsyncKeyState) in C# (ich möchte es in C++ tun) handeln. Also, ich habe eine DLL mit diesem Inhalt gemacht: http://pastebin.com/yEHJKSS7.Low-Level-Hooker

Nun, es ruft nicht zur Handler-Funktion auf.

durch die Art und Weise hier ist, wie ich die dll verwendet:

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

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

edit: jetzt sah ich, wie ich „debug“ in der DLL kann, hier sind die Ergebnisse: die SetWindowsHookEx 255 gibt - ich denke, es ist Starge, weil es sich lohnt, genau zu verkohlen - ich werde in der Dokumentation nachsehen, was es bedeutet.

edit: 255 ist gültiger Rückgabewert: O nur NULL (0) ist ein Fehler.

Ich habe keine Ahnung, was das Problem ist.

bearbeiten: nun, mein Freund brachte mir eine Nutte, die für ihn arbeitete. und rate mal ... es hat nicht funktioniert.

Ich entschied, dass es sehr seltsam ist, also habe ich GetLastError und habe 127 - Prozedur nicht gefunden. Ich sehe keinen Grund, meine Prozedur nicht gefunden werden,

+11

Patty die Low-Level-Tag-Nutte? –

+37

+1 für einen Titel, der mich diese Frage lesen ließ :) –

+12

Titel intrigiert mich, aktuelle Frage enttäuscht mich. –

Antwort

1

Ist Ihr Haupt wirklich nur telefonieren SetHandler gefolgt von Schlaf?

Sie benötigen einen MessageLoop, um für alle Veranstaltungen bitte Hilfe sein :(

+0

für jetzt, versuche ich die Nutte auf dem Konsolenfenster. Im SetWindowHookEX sollte es die "Nachrichtenschleife" der Tastatur geben, und die Prozedur ist auch in der DLL. @Philipp & (|) Frank: Es tut mir wirklich leid, dass meine Muttersprache kein Englisch ist. Ich tue mein Bestes. – Ohad

+0

OK, ich habe eine Richtung gefunden (Ich habe sie bearbeitet, ja Frage), aber ich weiß nicht genau was passiert, weil mein Freund mir gesagt hat, dass es für ihn funktioniert. – Ohad