aktuellen pfad auslesen
-
hi wie ist es möglich den aktuellen pfad von meiner exe auszulesen?
grüße hans
-
Was meinst Du denn, das current working directory oder den Pfad in dem Deine EXE liegt?
1. Benutze GetCurrentWorkingDirectory
2. Benutze GetModuleFileName und schneide den Namen ab (PathRemoveFileSpec), es bleibt der Pfad der Exe.
-
ich möchte den genauen pfad wo die exe liegt inclusive dem namen der exe
was muss ich dafür einbinden?
-
hans-sonny schrieb:
was muss ich dafür einbinden?
Steht doch alles da...
-
wie mache ich das unter ansi-c?
-
Gar nicht.
-
wieso nicht?
-
Ich nehme an, dot meint:
Die Ansi C Standard Library bietet dir keine Möglichkeit den Pfad und Namen deines EXEs auszulesen. Du kannst, wie Martin Richter vorgeschlagen hat, die Windows API benutzen. Entweder mit Ansi C, Ansi C++ oder vielen anderen Sprachen die mit DLL die ein C- Interface bereitstellen umgehen können.
-
Du könntest es prinzipiell auch über system(); machen...
-
die windows api habe ich sowieso importiert die brauch ich noch für was anderes
hab mir das mit getcurrent ... mal angeschaut da ist irgendwas mit :: das versteh ich nicht
wie müsste es denn ausshene? kann mir das jemand mal erklären möchte einfach den pfad einer variablen zuordnen
-
-
Ich würds einfach per GetModuleFilenameEx machen:
TCHAR buffer[MAX_PATH]; if(size_t len = GetModuleFileNameEx(GetCurrentProcess(), 0, buffer, sizeof(buffer)/sizeof(TCHAR))) { do { if(buffer[--len]=='\\') { buffer[len] = 0; break; } } while(len); }
Also Aufruf, Suchen des letzten '\' und Nullsetzen.
buffer
enthält nun den Pfad.
-
Oh, oh, len ist unsigned, sollte aber signed sein.
@dot: per SetCurrentDirectory kann dieses aber auch geändert werden...
-
Hmmh schrieb:
@dot: per SetCurrentDirectory kann dieses aber auch geändert werden...
Darum heißt's ja auch "aktueller Pfad" und nicht "ewiger Pfad"... :p
-
Ich wollte nur darauf hinweisen, dass
GetCurrentDirectory
keine zuverlässige Methode ist, den Pfad der ausführbaren Datei zu erhalten.Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
-
Hmmh schrieb:
Ich wollte nur darauf hinweisen, dass
GetCurrentDirectory
keine zuverlässige Methode ist, den Pfad der ausführbaren Datei zu erhalten.Ok, ich ging davon aus dass er eigentlich das Working Directory meint und nicht den Pfad der exe. Für den Pfad zur exe is natürlich GetModuleFileName() the way to go, da hast du recht.
-
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
-
_Luckie schrieb:
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
Ich hatte angenommen, dass das Arbeitsverzeichnis standardmäßig auf den Pfad der ausführbaren Datei gelegt wird, zwischenzeitlich aber durch GetOpenFileName etc. geändert werden kann.
Wie geschrieben, der Pfad der ausführbaren Datei sollte damit nicht bestimmt werden.
-
So ist es.
Arbeitsverzeichnis -> GetCurrentDirectory()
Pfad zur exe -> GetModuleFileName()
-
Hmmh schrieb:
_Luckie schrieb:
Hmmh schrieb:
Klar, bei dem anzunehmenden Minimalprgrämmchen des TE (soll keine Beleidigung sein!) spielt es vielleicht keine Rolle... :xmas1:
Wieso spielt es keine Rolle? Und was hat das mit dem Umfang des Programms zu tun?
Ich hatte angenommen, dass das Arbeitsverzeichnis standardmäßig auf den Pfad der ausführbaren Datei gelegt wird, zwischenzeitlich aber durch GetOpenFileName etc. geändert werden kann.
Wie geschrieben, der Pfad der ausführbaren Datei sollte damit nicht bestimmt werden.
Es reicht schon bei einer Verknüpfung ein anderes Arbeitsverzeichnis anzugeben.