Autor |
Beitrag |
Steve1024
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Sa 25.08.07 18:34
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
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: 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 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: 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
      
Beiträge: 75
WinXP Pro
Delphi 7 Enterprise ;-)
|
Verfasst: 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  auf jedenfall giebt es da nen source (imMemExe von irgendwem - einfach googlen^^)
cvya
_________________ Willst du Körper an Körper pressen? Atem spüren? Gerüche wahrnehmen? Verschiedene Stellungen probieren? Rein und raus? Von hinten nach vorne? Ja? Dann nimm den Bus!
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: 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.
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Steve1024 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: So 26.08.07 13:17
Wie mach das denn dann?? Mit CreateProcess??
Hast du mir ein paar Resources dafür?? - Danke
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: So 26.08.07 16:24
Ne mit LoadLibrary laden, Export mit GetProcAddress holen und mit CreateThrad starten und SuspendThread stoppen
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Steve1024 
      
Beiträge: 141
Windows 2K, XP, 7 & Server 2003 - 2008; Linux (Ubuntu, Fedora)
D7, D05, D06, D09, DXE
|
Verfasst: Di 28.08.07 18:27
OK... ich werde es mal versuchen...
Wenn es nicht geht, dann melde ich mich wieder, ok?? - Thanks
|
|