AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Handle einer geladenen DLL in einem anderen Process finden
Thema durchsuchen
Ansicht
Themen-Optionen

Handle einer geladenen DLL in einem anderen Process finden

Ein Thema von Reddog · begonnen am 25. Jul 2004 · letzter Beitrag vom 31. Jul 2004
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von Reddog
Reddog

Registriert seit: 18. Jul 2004
Ort: Würzburg
56 Beiträge
 
#31

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 29. Jul 2004, 01:48
[EDIT]: Sorry für Doppel-Post, die Seite hat sich bei mir seltsam aufgehängt. [/EDIT]
All prime numbers are odd with the exception of two, which is an odd prime
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#32

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 29. Jul 2004, 19:18
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#33

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 29. Jul 2004, 19:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Reddog
Reddog

Registriert seit: 18. Jul 2004
Ort: Würzburg
56 Beiträge
 
#34

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 29. Jul 2004, 19:26
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,
All prime numbers are odd with the exception of two, which is an odd prime
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#35

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 29. Jul 2004, 19:40
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Reddog
Reddog

Registriert seit: 18. Jul 2004
Ort: Würzburg
56 Beiträge
 
#36

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 30. Jul 2004, 02:53
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.
All prime numbers are odd with the exception of two, which is an odd prime
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#37

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 30. Jul 2004, 15:28
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Reddog
Reddog

Registriert seit: 18. Jul 2004
Ort: Würzburg
56 Beiträge
 
#38

Re: Handle einer geladenen DLL in einem anderen Process find

  Alt 31. Jul 2004, 17:16
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.
All prime numbers are odd with the exception of two, which is an odd prime
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 02:44 Uhr.
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