Programm starten

Hallo,

Nun schaff ichs tatsächlich ein Programm aus einem Programm aus zu starten, doch muss ich anscheinend den ganzen Pfad angeben, was bei der Installation des Programms in einem anderen Ordner die Folge hat, dass das Programm nicht gefunden wird.
Ist es möglich mit einer Funktion den Ordner auzumachen, in welchem das Programm steht und dann dies dem restlichen Pfad vorn ranzuhängen?

mit freundlichem Gruss und grossem Dank bereits im Voraus
Grüsi

Hallo,

was sicher nicht geht: du kannst unmöglich alle Platten absuchen nach einer bestimmten EXE.

Wahrscheinlich ist das nur lösbar wie bei üblicher Standard-Software: die Datei ist im Pfad oder den Verzeichnissen, in denen Windows danach sucht; z.B. kannst du in einem Eingabefenster einfach „notepad“ tippen, und der Editor startet. Oder es gibt eine Verknüpfung, aber das funktioniert nur indirekt: „winword“ findet die
exe zwar nicht, aber ein Aufruf einer DOC-Datei. Man könnte natürlich auch die Registry nach dem entsprechenden Eintrag für .DOC durchsuchen.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ich mache es normaler weise so:
Beim ersten Start des Programms 1 (welches Programm 2 starten soll) ist der Pfad zum Programm 2 noch nicht bekannt. Also lasse ich Programm 1 fragen, wo denn Programm 2 ist (über Durchsuchen-Dialogbox). Den Pfad dahin speichere ich unter
Dokumente und Einstellungen\Benutzername\Anwendungsdatenoder
Dokumente und Einstellungen\All Users\Anwendungsdatenin einer ini-Datei. Die Registry wird schon von anderen Prtogrammen genug versaut.
Beim nächsten Start von Programm 1 kann es den Pfad zum Programm 2 hier auslesen.

Ach ja, Informationen darüber, wie Windows das Verzeichnis „Dokumente und Einstellungen“ findet, gibt es hier: http://www.microsoft.com/germany/msdn/library/visual…

Manfred

Ich will mein Vorrednern nicht wiedersprechen.

Aber brauchst du nicht einfach nur eine Variable wo der Pfad des gerade (programm1) gestarteten programms ist.
oder
Bzw wenn programm2 auch installiert ist, ist es in der registry zufinden. Meist auch dort der Programpfad .

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

vielen Dank für euere Antworten!

Aber brauchst du nicht einfach nur eine Variable wo der Pfad
des gerade (programm1) gestarteten programms ist.

Jawohl, wenn ich diese hätte wäre das zweite programm zu finden einfach, da es in einem Unterordner von demselben ist!

Dann nimm dies :

 char appPath[MAX\_PATH];
 ::GetModuleFileName(NULL, appPath, MAX\_PATH); // der Programmpfad mit programm.exe namen
 std::string Path(appPath);
 Path = Path.substr(0, Path.rfind('\\')); // ohne programm.exe namen

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Herzlichen Dank für deine Hilfe!