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
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]
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.
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]
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]