Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Messages an andere Programme abfangen (https://www.delphipraxis.net/50272-windows-messages-andere-programme-abfangen.html)

Palando 22. Jul 2005 19:21


Windows Messages an andere Programme abfangen
 
Hallo DP!

Mir war langweilig und ich habe mir schon lange vorgenommen, endlich mal die WinAPI ein bisschen besser verstehen zu wollen, also habe ich mich an ein Programm gemacht, das WindowsMessages an andere Programme (Wie Minimieren, der Befehl sichtbar zu werden oder der Schließen-Befehl) abfangen soll, bestimmten Code ausführen soll und die Message (unter Umständen auch verändert) weiterschicken soll.

Dann kam mir die spontane Eingebung, ein brennender Busch flog in den Raum und eine dahinhallende Stimme sprach: "Hooksssssssss" (hat leider gelispelt... :/)

Nunja, dachte ich mir, und quälte mich durch den passenden msdn-Artikel. Ich hab auch gedacht, dass ich, je nach Message, vielleicht die WH_CBT beziehungsweise WH_GETMESSAGE Hooks verwenden könnte. Nur leider beschränken sich die meisten Hook-Tutorials auf Maus-und-Tastaturhooks, sodass man zu den anderen Hooks leider kaum Hilfen findet. Ich hab dann anhand der msdn-Beschreibungen und einiger Codeschnipsel aus der Codelib a weng rumgetan aber es is leider nix gescheites dabei rausgekommen, was au nur ansatzweise funktionieren könnte. (Gut, mittlerweile bin ich immerhin soweit, dass der Explorer nichtmehr ständig abstürzt, wenn ich debugge :D)

Ich komme leider nicht weiter und dachte mir, die DP weiß da sicher eine tolle, einfach und mich-zum-ärgern-bringende Antwort, weil ich selber nicht draufgekommen bin ;).
Sind Hooks vielleicht sogar der komplett falsche Weg? vielleicht was ganz anderes?

Danke schonmal für eure Hilfe,
Palando :)

jfheins 22. Jul 2005 19:30

Re: Windows Messages an andere Programme abfangen
 
Ich würde (falls das geht) die WndProc umbiegen - also die Adresse der Ziel-Fenzer-Prozedur auf deine umbiegen, was mit der Nachricht machen, und dann die alte aufrufen ;)

Vielleicht geht das auch nur mit einer dll, die du dann in den fremden Prozess injezierst, aber irgndwie geht das doch bestimmt ..., oder ?

(Keine Garantie - Ich weis nichts, ich glaube es nur)

Masterof 22. Jul 2005 19:32

Re: Windows Messages an andere Programme abfangen
 
Hallo!

Hier ist ein Tutorial von Delphi-Source, villeicht hilft dir das weiter.
Hooks

MfG Master

Olli 22. Jul 2005 19:34

Re: Windows Messages an andere Programme abfangen
 
Wo genau ist denn dein Problem mit WH_GETMESSAGE. In meinem Tut beschreibe ich es eigentlich so generisch, daß du auch in der Lage sein solltest einen eigenen WH_GETMESSAGE-Hook zu implementieren.

@Masterof: Es gibt bereits eine aktuellere Version dieses meines Tutorials hier. Das auf DS ist nicht aktuell, da man dort auf eine Finalversion meines Tuts warten möchte.

Masterof 22. Jul 2005 19:40

Re: Windows Messages an andere Programme abfangen
 
Hallo!

Danke für deinen Hinweiß, ich werde es mir mal ansehen.

MfG Master

Olli 22. Jul 2005 19:45

Re: Windows Messages an andere Programme abfangen
 
Zitat:

Zitat von Masterof
Danke für deinen Hinweiß, ich werde es mir mal ansehen.

Keine Ursache. Bei weiteren dennoch auftretenden Fragen, fragst du hier. Das Tutorial wird demnächst im Rahmen eines Gemeinschaftsprojektes neu aufgelegt, so daß dein Feedback dort einfließen könnte.

Masterof 22. Jul 2005 20:06

Re: Windows Messages an andere Programme abfangen
 
Hallo!!

Also ich habe mir das Tutorial angeschaut, und die erste DLL die du zeigst funktioniert in der Version 7 nicht.
Der DLL Experte von Delphi baut die aDatei gleich ein bisschen anders auf. Für Welche Version ist das gemacht?
Du könntest die DLL auch mit den restlichen Quelltext versehen, denn wenn man ds macht was im Tutorial steht, dann bekommt man Probleme mit der Funktion OneFunction,...

MfG Master

Palando 22. Jul 2005 20:08

Re: Windows Messages an andere Programme abfangen
 
Zitat:

Zitat von Olli
@Masterof: Es gibt bereits eine aktuellere Version dieses meines Tutorials hier. Das auf DS ist nicht aktuell, da man dort auf eine Finalversion meines Tuts warten möchte.

Ich werds mir mal durchlesen, danke für den Link :)
Und fürs schreiben natürlich :D


@Masterof: Kenne ich schon das Tutorial, anhand von dem hab ich meine Codeversuche gemacht. Mal schaun obs mit Ollis Tut jetzt was wird... Ich werds heute wohl nichtmehr angehen, morgen aber ;)

Olli 22. Jul 2005 20:09

Re: Windows Messages an andere Programme abfangen
 
Zitat:

Zitat von Masterof
Also ich habe mir das Tutorial angeschaut, und die erste DLL die du zeigst funktioniert in der Version 7 nicht.
Der DLL Experte von Delphi baut die aDatei gleich ein bisschen anders auf. Für Welche Version ist das gemacht?
Du könntest die DLL auch mit den restlichen Quelltext versehen, denn wenn man ds macht was im Tutorial steht, dann bekommt man Probleme mit der Funktion OneFunction,...

Könntest du bitte Namen nennen (Name der Unit, Name der DLL) ... und ich hoffe du sprichst vom aktuellsten?

Ich habe leider kein Delphi 7. Konzipiert war es für Delphi 3-5 wo es definitiv läuft. Mangels D7 kann ich es schlecht testen. Werde mir die PE aber mal saugen und installieren.

Masterof 22. Jul 2005 20:14

Re: Windows Messages an andere Programme abfangen
 
Hallo!

Also, ich habe das von deiner Website im PDF genommen und wollte es mir durchlesen.
Gleich die erste DLL "SampleDLL" Du hast lediglich die Namen der Funktion angegeben, die du exportieren willst.
Um das nachvollziehen zu können braucht man aber den kompletten Quelltext der DLL.
Ich hoffe wir reden nicht aneinander vorbei.
Im PDF auf der Seite 6.

Master


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz