Entwickler-Ecke
Windows API - Prozess im Prozess
Steve1024 - Sa 25.08.07 18:34
Titel: Prozess im Prozess
Hi,
ich möchte eine sogenannte RunTime schreiben, welche meine Anwendungen selbst überwachen soll (ggf. anhalten und auch wieder fortsetzten kann).
Nun habe ich versucht einen weiteren Thread zu erstellen, welcher eine eigene TApplication besitzt zu schreiben und darin das weitere Programm (eingebunden via DLL) auszuführen.
Leider hängen diese aber immer noch zusmannen: D.h. wenn ich den Thread anhalte (SupsendThread) steht entweder alles oder nichts. Ich möchte aber nur den Prozess (aus der DLL) anhalten (SuspendThread) und nach belieben wieder fortsetzten (ResumeThread) können.
Lieb wäre mir auch wenn es möglich wäre einen Prozess als Teil meiner RunTime zu starten. So dass diese merkt wann ein Fehler auftritt, angehalten werden kann und fortgesetzt werden kann.
Vielen Dank für eure Hilfe!!
Bernhard Geyer - So 26.08.07 09:34
Du mußt schon mittels CreateProcess oder ShellExecute eine eigenständige Anwendung starten. Alles andere (Thread, ...) läuft im gleichen Prozessraum.
Steve1024 - So 26.08.07 11:15
Hallo...
und erst mal danke..
Nur kann man CreateProcess oder auch ShellExecute nur auf EXE anwenden, richtig? Ich kann also kein blanko Prozess (ohne EXE und MainThread) erstellen und den Thread aus der DLL oder einen bliebigen Thread daran binden (also MainThread), oder?
Denn dann hätte ich doch zwei Prozesse, welche beide von meiner Anwendung kontroliert und überwacht werden können (und auch ggf. Beendet werden sobald meine Anwendung geschlossen wird, da der MainThread weg wäre, oder?).
moddin - So 26.08.07 12:50
mhh ich weiß nicht ganz genau was du willst
aber du könntest ja den zweiten process direkt laden (readfile) und dann die relocs umschreiben
und dann evtl als eigenen thread ausführen
hab jetzt keine ahnung ob das geht :P auf jedenfall giebt es da nen source (imMemExe von irgendwem - einfach googlen^^)
cvya
uall@ogc - So 26.08.07 12:56
Eigebtlich sollte das so gehen wie du das vorhast.
Das Programm was überwacht werden soll (dll) darf in der dllmain nichts machen, da die dllmain vom Hauptthread aufgerufen wird. Du musst also den relevanten Startteil der dll exportieren. Dann kannst auf den Export einen Thread erstellen und diesen je nach belieben starten/stoppen.
Steve1024 - So 26.08.07 13:17
Wie mach das denn dann?? Mit CreateProcess??
Hast du mir ein paar Resources dafür?? - Danke
uall@ogc - So 26.08.07 16:24
Ne mit LoadLibrary laden, Export mit GetProcAddress holen und mit CreateThrad starten und SuspendThread stoppen
Steve1024 - Di 28.08.07 18:27
OK... ich werde es mal versuchen...
Wenn es nicht geht, dann melde ich mich wieder, ok?? - Thanks
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!