Einzelnen Beitrag anzeigen

idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#15

Re: HILFE! Noch einmal der Tastaturhook

  Alt 6. Mai 2010, 00:18
Ich habe gleich nach dem Lesen Deines ersten Posts die Hookinstallation SetWindowsHookEx in die DLL übersiedelt. Mein problem ist jetzt auch nicht mehr, dass mein Hook nicht global ist. Er ist global, und er meldet sich immer, egal in welches Programm ich eine tastatureingabe mache. Aber wenn mein Testprogramm den Focus hat, macht die Hookroutine alles wie sie soll, und sobald die Tastatureingaben in ein anderes programm gehen, macht sie manche Sachen nicht mehr, das ist aber ganz normaler Delphi Code - ich blicke da noch nicht ganz durch, vielleicht schauen die Tastaturnachrichten (= Parameter der HookProc) anders aus als wenn sie von der eigenen EXE kommen. Um das festzustellen, muss ich aber erst einmal eine IPC einrichten, damit ich sehe, was in der DLL genau passiert, und nachdem ich das auch noch nie gemacht habe, muss ich mich da erst einlesen.

Nebenbei: In einer globalen HookProc selbst kann man offenbar wirklich keinen Timer starten, wenn man das versucht, passieren die seltsamsten Dinge - und zwar nur, wenn die Tastaturereignisse an ein fremdes Fenster adressiert sind. Das war der eigentliche Grund, warum meine ersten Versuche völlig danebengegangen sind. Wenn man es weiss, ist es kein Problem, weil in der DLL funktionieren Timer - ausserhalb der HookProc - sehr wohl.

Zitat:
Allerdings war, wie schon gesagt, diese Vereinigung, sofern sie die DLL nicht kreißte/gebahr, nicht in der Lage, sich in andere Prozesse zu injizieren
Die DDL wird ja zur Laufzeit erst einmal aus der EXE in eine ganz normale DLL Datei extrahiert. Danach wird diese DLL Datei genauso geladen, als wäre sie nie Teil der EXE gewesen. Beim Laden der DLL kann für das Betriebssytem kein Unterschied mehr gegenüber einer DLL, die von vorneherein separat war, zu erkennen sein.
  Mit Zitat antworten Zitat