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 ReadProcessMemory? (https://www.delphipraxis.net/11277-readprocessmemory.html)

stOrM 3. Nov 2003 13:53


ReadProcessMemory?
 
Hallo!

Ich hab ein richtiges Hammer Problem...
Man stelle sich folgende Situation vor...

Fremdanwendung, sitzt in der Systray, als GUI folgendes:

MainWindow = AfxFrameOrView32, darauf ne SystabControl32 (Reiter "Events")
auf besagtem Reiter ne SysListview32...

Anwendung macht folgendes es überwacht bestimmten Ereignisses auf meinem System (XP Pro)...
Sobald eines der Ereignisse, die überwacht werden eingetreten ist passiert folgendes:

Fremdanwendung schreibt einen Eintrag in besagte Listview und/oder schreibt gleichzeitig einen Eintrag in sein Logfile...(kommt drauf an, ob der User Logfiles aktiviert hat oder nicht!)

Frage:
Wie kann ich, immer wenn die Fremdanwendung etwas in seine Listview einträgt, diesen Eintrag gleichzeitg in meine Anwendung (sagen wir mal in einem Edit oder Memo) kopieren???

Ich bin damit total überfordert (mangels Wissen!)
Jemand sagte mir ich brauche LVN_GETDISPINFO dafür ein anderer sagt geht nicht, brauchst ProcessReadMemory ????!!! :shock:

Ist es denn so schwireig nur diesen neuen Eintrag der fremden Anwendung auszulesen???

Hilfe!

regards
s!

Luckie 3. Nov 2003 14:00

Re: ReadProcessMemory?
 
http://www.luckie-online.de/downloads/ -> LuckieDips. Da lese ich mit ReadProcessMemory und WriteProcessMemory die Iconpositionen des Desktops aus, was auch nur ein Listview ist.

Prinzip ist folgendes: Die legst dir mit WriteProcessMemory eine TLVItem Struktur in dem fremden Prozess an, diese füllst du mit den nötigen Daten, dann liest du sie dir mit ReadProcessMemory aus und kopierst sie so in eine identische Datenstruktur deines Prozesses.

Funktioniert aber nur unter Windows NT ff. Consumer Windows stellt die nötigen API Funktionen zum Reservieren von Speicher in Adressräumen von fremden Prozessen nicht zur Verfügung.

stOrM 3. Nov 2003 14:06

Re: ReadProcessMemory?
 
Hi Lucky!

LuckieDips....
Hmmm Frage: Wie komme ich denn an die fremde Listview?
Ich meine wenn due die Listview des Desktops ausliest, wäre das in meinem Fall das Handle der fremden Listview?

mit WriteProcessMemory eine TLVItem Struktur in dem fremden Prozess an, diese füllst du mit den nötigen Daten, dann liest du sie dir mit ReadProcessMemory aus und kopierst sie so in eine identische Datenstruktur deines Prozesses

Vollkommen ratslos an diesem Punkt!
Ich hab das noch nie gemacht, ich hab auch Read/WriteProcess niemals benutzt kannst Du mir da weiterhelfen? :?

Ich hab keinen schimmer wie ich die Struktur aufbauen muss repektive wie ich damit umgehen soll ich lad mir aber grad mal die LuckyDips runter!

Funktioniert aber nur unter Windows NT ff. (Also auch Windows XP Pro???)

kindest regards
s!

Luckie 3. Nov 2003 14:12

Re: ReadProcessMemory?
 
Sollte auch mit XP gehen, wenn der Active Desktop nicht aktiviert ist.

Für deine restlichen Fragen, kuck in dne Quellcode. Mehr kann ich dir dazu auch nicht sagen, als da drin steht.

stOrM 3. Nov 2003 14:14

Re: ReadProcessMemory?
 
Jedenfalls schonmal danke schön für deine Hilfe ich versuchs mal!

kindest regards
s!

stOrM 3. Nov 2003 15:36

Re: ReadProcessMemory?
 
Bin grad dabei deinen Source zu studieren, was mir immer noch nicht klar ist:

Wie soll meine Anwendung denn informiert?
Soll heissen, wie oder wann weiss ich denn das ein neuer Eintrag in der fremden Listview erstellt wurde????

regards
s!

Luckie 3. Nov 2003 15:39

Re: ReadProcessMemory?
 
Tja. Kucken, ob sich die Anzahl geändert hat.

stOrM 3. Nov 2003 15:41

Re: ReadProcessMemory?
 
Ja ne iss klar...
Aber soll ich das ganze dann in einem Timer legen und jede Sekunde prüfen???
Persönlich halte ich das nicht für effektiv???!

Luckie 3. Nov 2003 15:42

Re: ReadProcessMemory?
 
Thread?

Wormid 3. Nov 2003 15:44

Re: ReadProcessMemory?
 
Wie wäre es denn, wenn Du lieber das Logfile überwachst? Dann liesse sich das ganze wenigstens Systemunabhängig gestalten... (Und sicherlich einfacher als die ReadProcessMemory-Geschichte)

Gruß

Wormid


P.S.: Aber auch bei dem Logfile kommst Du um nen Timer nicht drum herum...


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 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