Programmverzeichnis
-
Hallo!
Wie kann ich das Verzeichnis meines laufenden Programmes herausfinden?
Gruss
BigRed
-
Hi,
versuche es mal so:
// Holt Pfad und Name + .exe CString strPfad = GetCommandLine(); // Dateierweiterung abschneiden int pos = strPfad.ReverseFind( '\\'); strPfad = strPfad.Mid(1, pos-1); // Tesausgabe des Programmpfades MessageBox(strPfad);
-
Nein das von Panschev ist falsch. Such im Forum nach GetModuleFileName
-
Also bei mir klappt das so wie ich es angegeben habe, ausser ich habe die Frage falsch verstanden. Allerdings mag es sein das es mit GetModuleFileName() weniger Code benötigt. Kenne die Funktion nicht.
-
man kann ein programm auch so starten das GetCommandLine() nur DeinProgramm.exe liefert. also es ist nicht garantiert das es der vollständige pfad ist.
-
Alles klar, das wusste ich nicht. Wieder was gelernt
-
Hallo,
Danke für eure Hilfe. HAt mir sehr geholfen.
Hier meine endgültige Lösung:
CString cs; char ProgramPath[MAX_PATH]; GetModuleFileName(NULL, ProgramPath, MAX_PATH); cs = ProgramPath; cs = cs.Left(cs.ReverseFind('\\')+1); cs = cs+"FileList.ini"; m_pszProfileName=_tcsdup(_T(cs));
(Ich möchte meine .ini Datei gerne im Programmverzeichnis abspeichern... deshalb)
Gruss
BigRed
-
Falls ihr noch eine schnelle kurze Lösung haben wollt:
char buffer[_MAX_PATH]; /* Get the current working directory: */ if( _getcwd( buffer, _MAX_PATH ) == NULL ) perror( "_getcwd error" ); else printf( "%s\n", buffer );
Damit bekomt man den vollständigen Verzeichnisnamen, ganz ohne Programmnamen.
-
Ich vergaß noch zu erwähnen, dass sich _getcwd im Header <direct.h> befindet.
-
current working directory ist aber was anderes als das programmverzeichnis.
-
Nicht zu Programmstart.
Beim Start des Programms ist current working directory noch das Verzeichnis, in dem die Programmdatei liegt.
-
nein. man kann das arbeitsverzeichnis auch zum beispiel bei den eigenschaften einer verknüpfung ändern.
-
Nagut, du hast gewonnen.
-
danke