| Autor |
Beitrag |
Raorkon
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Mi 03.06.09 15:39
Hallo zusammen ich habe da ein Problem, bei den ich mom. keine Lösung sehe.
ich habe ein Windows CE Gerät auf dem ist Framwork 2.0 und OpenNetCF installiert. Es soll kein höhere Framework installiert werden.
Nun habe ich ein Programm das ein anderes Programm aufrufen soll und unter bestimmten Bedingungen das Quell-Programm beenden soll. Also dachte ich mir, gar kein Problem ich kann ja mit der Process-Methode das alles realisieren. Allerdings stellte ich dann fest das unter den Framework 2.0 solch banalen Methoden wie getProcessbyName() überhaupt nicht integriert ist. Vieleicht hat je einer von euch ne Idee wie ich an die Sache rangehen soll.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.06.09 15:42
Ich kenne die Funktion jetzt nicht, aber die hört sich so an als sollte die einen laufenden Prozess suchen, oder?
Aber wenn du den Prozess selbst startest, kannst du doch auch direkt damit arbeiten. Oder habe ich da jetzt was falsch verstanden.
(Wobei ich mit CE da keine Erfahrung habe.)
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Mi 03.06.09 15:44
ja ich kann mir die Processid vom laufenden Process holen. Allerdings wie bekomme ich die ID des aufrufenden Programms zum aufgerufenen Programm?
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.06.09 16:39
Also Moment, nochmal langsam: Raorkon hat folgendes geschrieben : | | Nun habe ich ein Programm das ein anderes Programm aufrufen soll und unter bestimmten Bedingungen das Quell-Programm beenden soll. |
Du hast zwei Programme geschrieben, das eine ruft das andere auf und das aufgerufene soll ggf. das Programm beenden, von dem es aufgerufen wurde. Aber beides sind deine Programme?
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Mi 03.06.09 19:05
Richtig , Hintergrund soll eine Updatefunktion werden. Da das Hauptprogramm definitiv beendet werden muss um dieses evt. updaten zu können habe ich mir überlegt die updatefunktion in ein externes Programm auszulagern oder evt. in einen Dienst. Allerdings muss ich um das Hauptprogramm beenden zu können die ID haben. Diese könnte ich mit process.getprocessid() erhalten. Diese funktion gilt aber nur für das gerade aktuelle Programm. Also kann ich diese Methode nicht aus dem Updateprogramm nutzen. Das Framework 3.5 kann ich aufgrund der geringen Speicherkapazität des Gerätes nicht nutzen. Hier würden nur fürs Framework 7MB drauf gehen und das ist eindeutig zu viel das Gerät(Es laufen noch etliche andere Programm auf den Gerät) .
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 03.06.09 19:21
Eine Updatefunktion realisiere ich gerade als Framework, allerdings nicht für C#.
Ich mache das so, dass ich das Update ins Tempverzeichnis herunterlade und die eigene Exe mit einem Parameter mit Adminrechten starte. Diese benennt dann alle Dateien inkl. der laufenden Exe um und beendet sich.
Danach starte ich die neue Exe mit einem anderen Parameter mit Adminrechten und beende das eigene Programm.
Die neu gestartete Instanz kopiert die heruntergeladenen Dateien aus dem Tempverzeichnis und löscht die alten umbenannten.
Wenn bei dir keine Adminrechte erforderlich sind, ist das natürlich sehr viel einfacher. Wichtig ist da nur, dass du die eigene Exe einfach umbenennen kannst. Heißt: In dem Fall kannst du einfach die eigene Exe umbenennen, die neue Exe an die Stelle herunterladen und die neue Exe mit einem Parameter starten, der die alte (umbenannte) Exe löscht.
|
|
Raorkon 
      
Beiträge: 86
Erhaltene Danke: 1
|
Verfasst: Do 04.06.09 07:38
Guten Morgen,
ich werde mal deine Idee aufnehmen und sie mal in einen kleinen Testprogramm umsetzen.
Vielen Dank im vorraus für deine Anregungen
|
|