.exe startet, wie kann ich deren Speicherort auslesen?
-
Hi!
Wenn ich meine fertig kompilierte .exe-Datei in einem beliebigen Verzeichnis starte, bräuchte ich für eine bestimmte Funktion allerdings den Pfad zu dem Verzeichnis wo sie drin ist.
Beispiel:
Datei liegt in C:\Temp\test.exe
Wenn ich die test.exe starte muss ich bei einer Funktion den Pfad auslesen, brauche also das "C:\Temp\" in einem string.Mit Directory::GetCurrentDirectory() habe ich es gerade (im Debug-Mode) vergeblich versucht...
Könnt ihr mir da weiterhelfen?
-
Versuch's mal mit GetModuleFileName() (wenn du NULL als ersten Parameter angibst, bekommst du den kompletten Pfad der Exe - da müsstest du nur noch den Teil hinter dem letzten Backslash abhacken).
-
Die Funktion finde ich gar nicht?
Wo versteckt die sich?[EDIT:]
Hat sich erledigt, ich spare mir sämtliche Pfadangaben:Help::ShowHelp(this, "help.chm"); // Datei im selben Verzeichnis wie .exe
Aber trotzdem danke.
-
GetCurrentDirectory liefert dir doch den Pfad in der deine Exe liegt...
Was bekommst du denn von obige Methode zurückgeliefert??
-
Beim Debuggen mit F5 innerhalb der IDE kam nicht der entsprechende Ordner raus, in dem ich die .exe nach dem kompilieren habe.
Wie ich inzwischen noch mit der release-Version herausgefunden habe (debug habe ich da jetzt nicht probiert) geht das schon.
Da habe ich die .exe aber auch auf den Desktop kopiert und dort gestartet, also nicht mit F5 innerhalb von Visual Studio...
-
Das heisst du verschiebst die Exe nach dem kompilieren? Oder erstellst du ne Release Version? Hab dich glaub ich noch nicht so ganz verstanden...
Ich hatte da bisher nie nen Problem mit, nicht beim debuggen und auch sonst nicht...
-
Als ich mit F5 in Visual Studio das Debuggen gestartet habe, da kam mit "GetCurrentDirectory" nicht das Debug-Verzeichnis raus, wo ich die .exe hatte.
Dann habe ich auch mal eine release-Version erstellt, und diese aus dem release-Verzeichnis auf den Desktop kopiert.
Den Inhalt von "GetCurrentDirectory" habe ich jeweils in einer MessageBox angezeigt.
Mit der auf den Desktop kopierten release-Version der .exe ging das, mit der debug-Version innerhalb von VS (mit F5) aber nicht.Allerdings muss ich dazusagen, dass ich ein Projekt mit einer Dll und einer Gui habe, und die Funktion ist innerhalb der Gui.
Die Ausgabeverzeichnisse von Debug und Release liegen beide im Ordner der Dll, vielleicht hat das ja auch damit zu tun?Ich hoffe diesmal habe ich es besser beschrieben!?
-
Die Ausgabeverzeichnisse von Debug und Release liegen beide im Ordner der Dll, vielleicht hat das ja auch damit zu tun?
Jup
-
String^ myPath = System::Windows::Forms::Application::StartUpPath;