Autor Beitrag
Arnold
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 05.07.03 22:44 
Hallo,

Ich hab' mich mal mit Assarbads Tutorial beschäftigt - ertsmal großes Lob für seinen Aufwand :D . Nun bin ich kein Spezi auf diesem Gebiet und würde mein Hook-Programm gerne mit Hilfe der VCL schreiben.

Es stellt sich nun die Frage, wie das Programm nun die dafür eingeführten Maus- bzw. TastaturHook-Messages (z.B. WM_MOUSEHOOKMSG) abfangen und auswerten kann (Laden der DLL und Installieren des Hooks bei Button-Klick funktioniert schon).

Vielleicht kommt man mit der WndProc Prozedur weiter, folgender Code führte bei mir jedoch zu Programm-Abstürzen beim Ausführen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
{...}

protected
    // Die Default WndProc überschreiben
    procedure WndProc(var msg : TMessage); override;

{...}

procedure TForm1.WndProc(var msg : TMessage);
var     temp: string;
begin
  if (msg.Msg = ViewHandle^.WM_MOUSEHOOKMSG) then
  begin
    temp := mousmsg2string(msg.wParam);
    Label2.Caption := temp;
  end
  else
  begin
    inherited WndProc(msg);
  end;
end;

Weiterhin müsste ich natürlich noch die Messages auswerten, die obige Variante ist nur eine Idee, ich weiß aber natürlich nicht ob sie so funktioniert ...

Ich würde mich also freuen, wenn wir die 2 Probleme lösen könnten.


Thx,
Arnold

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt & Titel geändert.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 05.07.03 23:17 
Schau mal in der Hilfe nach dem Stichwort message.
Damit kannst du einer Prozedur eine Nachricht zuweisen, wird diese Nachricht an dein Fenster geschickt, wird die Prozedur ausgeführt. Syntax und Anwendungsbeispiel müsste in der Hilfe stehen.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.07.03 23:43 
@tommie-lie: Das wird nicht gehen, da ich die Nachricht vorher mit RegisterWindowMessage() registriere. Sie kann also weder in einer CASE-Schleife noch in einer Funktions/Methodendeklaration stehen.

@Arnold: Vom ersten Anblick her sollte deine Variante funktionieren.
Die Daten dann aus der MMF in dein Programm zu zotteln ist eigentlich nur eine Frage von CopyMemory() oder ähnlichen Funktionen. Stattdessen kannst du auch einfach über den Recordtypen die MOUSEHOOKSTRUCT ansprechen.

Ich habe inzwischen eine Beta meines neuen Hooktuts. Ich würde es dir schicken, wenn du willst (inkl. Sourcen). Falls du Interesse hast, schreib mir mal ne Mail (Kontakt siehe Homepage).
Arnold Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 06.07.03 13:26 
Titel: Message in der Hilfe
@tommie-lie: Danke für den Tipp - habs grad probiert. Die Methode aus der Hilfe scheint aber für die vorher für den Hook registrierten Messages, wie Assarbad schon sagte, leider nicht zu funktionieren. :cry:

@Assarbad: Mail ist raus :roll:

Arnold
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 06.07.03 17:02 
[Komisch ... hab das Gefühl hier kam was weg ... :roll: ]

@Arnold: Antwort wurde auch geschickt.

Siehe auch: www.delphi-forum.de/viewtopic.php?t=101
Arnold Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 06.07.03 20:25 
Titel: Gleich mal probieren
Ah, werd' mich gleich mal ranschmeißen.

Danke
Arnold