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.