Pfad der ausführbaren Datei?
-
Hallo.
Ich habe schon überall gesucht, aber ich bin immer nur auf "GetModuleFileName" gestoßen, doch diese Funktion klappt nicht...
Ich suche eine Funktion, mit der ich den Pfad meiner exe herausfinden kann.Gruß Speedy_92
-
Also zumindest den relativen Pfad (den pfad wie du deine exe aufgerufen hast), kannst du mit dem ersten argument von main herausfinden:
int main(int argc, char* argv[]) { printf ("Pfad der ausfuehrbaren datei: %s", argv[0]); return 0; }Wenn du das Programm aus dem Verzeichnis "C:\MeineProgramme\" heraus aufrufst, und das Programm liegt unter "C:\MeineProgramme\pfadfinder" und es heißt "pfadfinder.exe", müsste argv[0] "pfandfinder\pfdafinder.exe" sein, wenn ich mich nicht täusche.
-
Klappt bei mir leider nicht. Bei
cout<<argv[0]<<endl;kommt folgende Ausgabe:
00335D28*EDIT: Jetzt kommt er auf einmal der richtige Pfad... Ich versteh die Welt nicht mehr.

-
weil argv[0] ein zeiger ist, den operator<<() anscheinend als solchen ausgeben will.
Versuch mal ein string objekt daraus zu erstellen:#include <iostream< #include <string> ... std::cout<<std::string(argv[0])<<std::endl; ...
-
Das muss aber nicht immer der relative Pfad sein. Wenn der Dateipfad nämlich in der PATH-Umgebungsvariable ist, dann kann der Aufruf auch einfach über den Namen erfolgen. In argv[0] steht immer der Aufruf, wenn der von einer Kommandozeile kommt.