Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Handle einer geladenen DLL in einem anderen Process finden (https://www.delphipraxis.net/26549-handle-einer-geladenen-dll-einem-anderen-process-finden.html)

Reddog 29. Jul 2004 01:48

Re: Handle einer geladenen DLL in einem anderen Process find
 
[EDIT]: Sorry für Doppel-Post, die Seite hat sich bei mir seltsam aufgehängt. [/EDIT]

c113plpbr 29. Jul 2004 19:18

Re: Handle einer geladenen DLL in einem anderen Process find
 
Zitat:

Zitat von Reddog
Muss ich das jetzt mit einem globalen Hook machen?

Dies wäre ein weg, den ich aber nicht empfehle, da dieser ja global ist ... entweder kriegst du einen keybd-hook nur in das Spiel (frag mich ned wie), oder du fängst die Funktion die das Spiel verwendet um die Tastenanschläge zu bemerken ab, und 'missbrauchst' sie für deine eigenen Zwecke, oder, was ich immer zu testzwecken verwende, kannst du die Get(Async)KeyState-Funktion für eine Taste verwenden (quasi in einer Timerschleife), wobei die Async-Variation auch in anderen Programmen gesendete Tasten wahrnimmt.

ciao, Philipp

NicoDE 29. Jul 2004 19:25

Re: Handle einer geladenen DLL in einem anderen Process find
 
Wenn es sich um ein DirectX-Spiel handelt, kann es sein, dass Du mit einen Low Level Keyboard Hook an die Daten kommst.
Ansonsten kann es sein, dass das Spiel selbst einen Hook setzt oder Du die falsche ThreadId verwendet hast...


Gruss Nico

Reddog 29. Jul 2004 19:26

Re: Handle einer geladenen DLL in einem anderen Process find
 
Timer habe ich auch schon ausprobiert, mit SetTimer und einer TimerProc. Nur da die TiemrProc ja auch in der DLL drin ist, klappt das genauso wenig wie die Sache mit dem Hook, :(

c113plpbr 29. Jul 2004 19:40

Re: Handle einer geladenen DLL in einem anderen Process find
 
kapsle einfach einen thread ab, mach ne kleine endlosschleife rein, in der immer wieder z.B. GetKeyState abgefragt wird, und halte den thread dann mit z.B. Sleep(200) für 200ms an, und schon hast du eine Tastenabfrage!

Eine weitere Möglichkeit ist, wenn es sich um ein DX-Spiel handelt, dass die Input funktionen von DX verwendet, dass du die Input funktion einfach per Function-Hook abfängst, und das ergebnis für deine Zwecke verwendest.

ciao, Philipp

Reddog 30. Jul 2004 02:53

Re: Handle einer geladenen DLL in einem anderen Process find
 
Wie würde denn so ein Function-Hook funktionieren? Ich kann mir leider nicht Konkretes darunter vorstellen.

Das mit Endlosschleife und Sleep habe ich als Allererstes ausprobiert, aber es hält den Spiel-Thread auf, da es anscheinend nur einen aktiven Thread per Process geben kann.(Oder aus irgendeinem anderen Grund?).

Reddog.

c113plpbr 30. Jul 2004 15:28

Re: Handle einer geladenen DLL in einem anderen Process find
 
Du musst die Endlosschleife auch in einem neuen Thread unterbringt, sonst hälst du das spiel natürlich auf ...

Ein Function-Hook ist ein Hook, der eine funktion abfängt (wie der name schon sagt). Wenn du dies nun auf die Funktion von z.B. DirectInput die die Tasten ausliest anwendest, dann könntest du die tastatureingaben auch so abfangen.
Dies dürfte mit der MadCodeHook-Lib recht einfach gehen.

ciao, Philipp

Reddog 31. Jul 2004 17:16

Re: Handle einer geladenen DLL in einem anderen Process find
 
Gibt es eigentlich eine Möglichkeit das Spiel dazu zu bewegen die DLL selbst zu laden? Das wäre echt das Beste. Ich hab's versucht durch Überschreiben der ersten 5 Bytes der WndProc des Spiels mit einem CALL Aufruf zu einem Code-Stück, das dann die DLL laden soll. Aber irgendwas habe ich verpfuscht, da das Spiel gleich darauf Abstürzt, sogar, wenn ich den eigentlichen Code der die DLL lädt wegkommentiere. Also muss es an der Art und Weise liegen, wie ich die WndProc manipuliere.

Reddog.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Seite 4 von 4   « Erste     234   

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 by Thomas Breitkreuz