AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HILFE! Noch einmal der Tastaturhook
Thema durchsuchen
Ansicht
Themen-Optionen

HILFE! Noch einmal der Tastaturhook

Ein Thema von idefix2 · begonnen am 2. Mai 2010 · letzter Beitrag vom 16. Mai 2010
Antwort Antwort
idefix2

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

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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz