Programm neustarten
-
Wie kann ich mein Programm neustarten ?
Danke für Hilfe!
-
Doppelklick auf das Icon
-
Ist echt ernst gemeint und wichtig.
-
rufe main() oder WinMain() auf
...
^^
-
Die Frage ist was Du darunter verstehst, soll alles neu erzeugt werden, willst Du nur den Vorgang wiederholen?
Letzteres könntest Du durch einfaches basteln der Funktion und einer while Schleife erreichen.
Wenn aber alles (wirklich alles) von vorne beginnen soll, dann startest Du am besten Dein eigenes Programm per CreateProcess/ShellExecute erneut und beendest die alte Instanz.
-
Also du musst als erstes
#include <windows.h>dann der Befehl:
ShellExecute(NULL,"open","deinprogramm.exe",NULL,NULL,SW_NORMAL);So müsste das gehen
-
und dann von der 2. Instanz die erste beenden.
-
Ist zwar alles möglich, wenn jedoch das Programm ne Instanzensperrung via Mutex o.ä. enthält funktioniert das nicht.
Dann müsstest du dir beispielsweise ne kleine Win32-Konsolen-Anwendung schreiben, welche dann aus deiner Hauptinstanz aufgerufen wird:Dieses Hilfsmodul muss dann:
1. Das aufrufende Modul beenden,
2. eine neue Instanz starten (man sollte dazu den Pfad via Command-Line übermitteln)
3. und schließlich sich selbst beenden.Musst du abwägen, was du brauchst.

-
Warum soll man irgendwelche "Hilfsmodule" brauchen!?
Starte einfach Deinen Prozess mittels "CreateProcess" und übergebe da den Namen/Pfad der EXE (welche Du mittels GetModuleFileName bekommst).
Dann beende Deinen Prozess.
-
Hm jo stimmt...hab noch nit mit CreateProcess() gearbeitet...ist nat. schöner

-
Aber hebt das denn das Problem mit einer etwaigen Instanzensperrung auf? Es wird doch trotzdem versucht eine 2. Instanz zu starten und dies müsste durch die Sperre doch scheitern, oder sehe ich da was falsch?
-
ne da die Sperre i.d.R. nur ne 2 Instanz sperrt. und Die hauptinstanz wird ja beendet. Das Hilfsmodul (bzw der neue Prozess vie CreateProcess) beedet erst das alte und startet dann das neue.
(bzw das Programm was den Hilfsprozess/modul öffnet kann sich dann auch selbst beenden, das is dann wurscht)
-
Also ich verstehe Euer Problem mit der "Instanzsperre" nicht so ganz...
WER hat denn den Source zu der EXE, die da neu gestartet werden soll!? Doch der OP selber... warum kann er kann nicht einfach die "Instanzsperre" beenden bevor der Prozess nochmals gestartet wird?
Ihr macht alles echt mal wieder komplizierter als es ist
