Seite 1 von 1

Keyboard Hook Problem

Verfasst: 05.07.2012 21:41
von pyromane
Hallo,
ich habe folgendes Problem:

Irgendwo im Board habe ich einen Code zu einem Keyboard Hook genommen und wollte diesen für ein Projekt verweden. Ich habe den Code soweit runtergebrochen das er überprüft ob 4 Tasten gedrückt wurden. Wenn ja, möchte ich diese Tasten verarbeiten. Nun dauert das Verarbeiten aber und wird in der folgenden Methode gemacht:

Code: Alles auswählen

Procedure.l LowLevelKeyboardProc(nCode.l, wParam.l, lParam.l)
  Protected *p.KBDLLHOOKSTRUCT = lParam, rz.s
  If nCode = #HC_ACTION
    rz = MakeChar(wParam, *p)
    If rz <> ""
      KB_Text + rz
      ; VERARBEITEN
    EndIf
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
Da das verarbeiten eige huntert ms braucht, stockt das Keyboard was unschön ist. Deshalb wollte ich das ganze erst in einen Thread auslagern aber da Knallen mir die Speicherfehler nur so um die Ohren. Multithreading war mit PureBasic noch nie meins. Keine Ahnung warum aber da gibts echt komische Fehler!

Jemand eine Idee wie ich das lösen kann?
EndProcedure

Re: Keyboard Hook Problem

Verfasst: 06.07.2012 11:29
von NicTheQuick
Gegenfrage: Was verarbeitest du genau, dass es so lange dauert? Vielleicht kann man ja einfach an der Stelle dann etwas optimieren.

Re: Keyboard Hook Problem

Verfasst: 06.07.2012 13:15
von Kiffi
NicTheQuick hat geschrieben:Gegenfrage: Was verarbeitest du genau, dass es so lange dauert?
das Schreiben in die Keylogger-Datei und anschliessende Versenden via Mail dauert so lange. :wink:

Re: Keyboard Hook Problem

Verfasst: 08.07.2012 01:01
von pyromane
Ich gleiche die Dateinen mit einer MySQL Datenbank an. In der stehen MD5 Hashes und ich Hashe bestimmte Zeichenketten. Sobald ein bestimtme Zeichenkette (Passwort) erkannt wird, geht es weiter im Programm. Nun dauert ja jeder Request eine bestimmte Zeit etc.

Re: Keyboard Hook Problem

Verfasst: 08.07.2012 22:07
von pyromane
Klappt nun alles. Ich hatte dem Thread einen Pointer vom String mit den Keyboardtasten gegeben, welche gedrückt wurde. Das hat aber so gar nicht hingehauen. Nun habe ich mit Global und Shared (schlag mich ruhig) das ganze zum laufen gebracht :D