Ich denk es geht um die NamedPipe? Dann bringt das Schließen des
Mutex also nichts.
Klar bringt das was. Die Named Pipe wird nur unter bestimmten Umständen geöffnet (nicht schon beim Anzeigen der MainForm). Um ganz genau zu sein, ist die Named Pipe nur dann geöffnet, wenn ein weiteres Formular sichtbar ist. Die Funktion zum "Ausführen als" ist aber nur via MainForm zugänglich.
Zitat:
- Programm beenden und erst dann das andere Programm starten.
Äh, ja, und jetzt zeigst du mir noch, wie man von/mit einem beendeten Programm ein anderes startet
.
Zitat:
- Anderes Programm starten, im per Paramter sagen es soll in paar Sekunden warten, und währenddessen das erste Programm beenden.
Ja, an eine Verzögerung hab ich auch schon gedacht. Aber so richtig gefallen will mir das nicht.
Zitat:
- Pipe und
Mutex schließen und dann das andere Programm starten. (danach eventuell das erste Programm ganz schließen)
Das vorherige Schließen des
Mutex bringt mir nichts. Ich erkläre das mal etwas genauer. Die Funktion ShellExecuteEx mit dem Verb "runas" bringt den Dialog "Ausführen als". Schließe ich das
Mutex vor dem Aufruf von ShellExecuteEx (bzw. obiger Funktion RunAs), ist es weg und folglich sind weitere Instanzen möglich.
Schließe ich das
Mutex nicht vorher: Angenommen, der Anwender bricht den "Ausführen als"-Dialog ab, gibt die Funktion RunAs False zurück. Darauf könnte ich reagieren, und das
Mutex schließen. Parallel dazu läuft aber noch der neu gestartete Prozess. Welche Instanz wird nun schneller sein? Die eigene Instanz mit dem Schließen des
Mutex oder die neu gestartete Instanz mit dem (vergeblich versuchten) Erzeugen eines
Mutex?
MfG Dalai