MFC Pfad des Programmes
-
Nabend
weiss jemand wie ich den Pfad der MFC Anwendung heruasfinden kann?mfg
-
CString strPath = GetCommandLine();// Pfad + Name der Exe holen int pos = strPath.ReverseFind( '\\'); // letztes '\' finden strPath = strPath.Mid(1, pos-1); // Name der Exe abtrennen, so dass nur noch der Pfad übrig bleibt
einfach mal die suche benutzen
-
steff3: Mit GetCommandLine() kriegst du nicht immer den kompletten Pfad.
GetModuleFileName wäre richtig.
-
das hab ich nicht geschrieben, sondern nur kopiert
und bis jetzt hazs immer funktioniert
-
kommt drauf an wie du das programm startest.
wenn du dein programm über die windows-konsole startest steht nur noch der name der exe datei drin.
oder wenn man dann dein programm mit nem parameter startet der '/' enthält gehts auch schief.
-
jo funktiniert thx
-
Eine Alternative:
// get current directory char cAppPath[1024]; GetCurrentDirectory(1024, cAppPath);
-
TCHAR buffer[MAX_PATH+1] = { 0 }; GetModuleFileName(NULL, buffer, MAX_PATH); CString appPath = buffer; int pos = appPath.ReverseFind( '\\'); appPath = appPath.Mid(1, pos-1);
oder mit CPath:
CString appPath=nsPath::GetModuleFileName().GetPath();
@burner: wie "falsch!" schon gesagt hat... geht fix mal schief.
@sky: Klappt auch nicht immer: wenn das Programm aus einem anderen Verzeichnis aufgerufen wurde, oder der aktuelle Pfad von Programm gewechselt wurde.
-
Klappt auch nicht immer: wenn das Programm aus einem anderen Verzeichnis aufgerufen wurde, oder der aktuelle Pfad von Programm gewechselt wurde.
Wie meinst du "anderes Verzeichnis"?
Ja das stimmt mit dem aktuellen Pfad, daher hab ich den Methodenaufruf direkt bei der Programminitialisierung programmiert und speichere den Pfad entsprechend in einen CString.
-
(1) "Eigenschaften" eines Shortcuts: dort kannst du "Ausführen in" angeben: das wird beim Start als aktuelle Verzeichnis gesetzt.
(2) Konsole:
c:\temp>..\otherfolder\foo.exe
auch hier ist für "foo" das aktuelle verzeichnis c:\temp
in beiden Fällen erwischst du mit GetCurrentDirectory() den falschen Pfad.
Und sag' nicht, daß macht doch niemand....
-
Das macht alleine schon das Visual Studio 6 ständig.
Dort ist nämlich, wenn man nix selber umstellt die Datei im Verzeichnis Debug/Release, das Arbeitsverzeichnis allerdings das Priojektverzeichnis
-