Pfad der Exe ermitteln. Hilfe!
-
Bin wohl einfach zu doof die MSDN (CWinApp*) oder die suche zu bedienen.
Ich muss den Phad der gestarteten Dlg-Applikation ermitteln. wie kann man das anstellen?Hintergrund:
Verflucht ist das doof:
Ich habe eine Methode, welche mir Dateien in einem Unterverzeichnis (.//subdir//) ermittelt.
Dies funktioniert. Wenn ich nun aber einen Save-Dialog aufrufe und etwas in einem anderen Pfad abspeichere, dann scheint sich der aktuelle ausführungs-Pfad zu ändern!! Krass - mit derselben Dateisuch-Methode kann nachher nix mehr gefunden werden. zumindest nicht in diesem Subverzeichnis.However, ich muss mir nun den ersten ausführungspfad merken und dann immer wenn Pfadoperationen stattfinden, von diesem Absoluten Pfad erneut ausgeben.
-
Suchst du vielleicht das ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39131.html
-
isabeau schrieb:
Suchst du vielleicht das ?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39131.htmlgenau! Danke!
PS: 'GetCurrentDirectory()' scheints auch zu tun.
-
Das tut nur, wenn du es nicht vorher gewechselt hast.
-
estartu_de schrieb:
Das tut nur, wenn du es nicht vorher gewechselt hast.
hmm aber welche motivation hat man, den aktuellen pfad neu zu setzen?
-
Hmm, ich wollte damals ne Datei aufmachen.
Ist halt nur ne Falle, wenn man nicht dran denkt.
-
Wenn man deinem Programm via Parameter einen Pfad übergibt, dann wird dieser auch zu GetCurrentDirectory(). Genau das selbe, wenn man eine Datei mit "Öffnen mit..." mit deinem Programm öffnet. Deshalb benutze ich das nicht mehr.
-
Ellek schrieb:
Wenn man deinem Programm via Parameter einen Pfad übergibt, dann wird dieser auch zu GetCurrentDirectory(). Genau das selbe, wenn man eine Datei mit "Öffnen mit..." mit deinem Programm öffnet. Deshalb benutze ich das nicht mehr.
und das mit dem "Öffnen mit..." war genau das Phänomen, mit welchem ich zu kämpfen hatte. Ich hab jetzt beim instanzieren der Applikation ein 'GetCurrentDirectory' drinne und speichere den in einer member ab - so hab ich immer den aktuellen exe-Pfad, falls man den brauchen muss.
oder gibts eben eine schlauere Anwendung davon? die im Link erklärte Methode passt mir irgendwie nicht so.
-
habs so gelöst
inline CString GetAppPath() { TCHAR szPathName[MAX_PATH]; ::GetModuleFileName(NULL, szPathName, MAX_PATH); LPTSTR pszFileName = _tcsrchr(szPathName, '\\') + 1; *pszFileName = '\0'; return szPathName; }
-
-
Ich weiß nicht, ob es bequemer ist, eine andere Klasse einzubinden.
-
[werbepause]
Wenn du einmal über einen Dateinamen der Form
"\\server\share\some folder\"\file.dat
gestolpert bist, wirst du...
Eigentlich brauch' ich davon nur:
- Trimmen + Unquote
- Pfad + dateiname trennen
- anhängen mit automatischen Backspace-Ausgleich
- GetModuleFileName (!)
- in Registry speichern, aus Registry laden.
Die anderen 1001 Methoden sind nur zur Vollständigkeit.[/werbepause]
-
Ich machs immer mit GetCommandLine, da bekommt man Aufruf-Parameter noch gratis mit dazu