Speicherpfad des eigenen Programmes ermitteln?

MSAB

Mitglied
Moin, ich hab grad ein Problem:
Undzwar brauche ich für bestimmte Funktionen, den eigenen Pfad meines Programmes. Ich hab über google etc. leider nichts dazu gefunden (ist ja auch schwer, hier die richtige Suchbegriffe zu finden^^).

Also mein Programm soll seinen eigenen Pfad erkennen und ihn z.B. als char deklarieren...
Ich hoffe ihr könnte mir da helfen (vll. sogar mit Code-Beispiel :-) )

MfG

PS: Falls es einige interresiert, ich arbeite mit DEV-Cpp (und da mit GUI (wxwidgets))
 
Hi.

Such mal im Forum nach "GetModuleFilename".

Gruß
Hey, thx, damit funktioniert es. Hätte ich noch lange suchen können, bis ich auf die Funktionen gestoßen wäre ;D
Mein Code ist zwar bestimmt jetzt nicht der Optimalste, aber solange es funktioniert :)

PS: Er sieht jetzt so aus:
Code:
const string Speicherpfad_ermitteln()
 {
 	TCHAR Path[256];
 	::GetModuleFileName(NULL,Path,256);
 	LPTSTR Path_gekuerzt = _tcsrchr(Path, '\\') + 1;
 	*Path_gekuerzt = '\0';
 	return Path;
 }       
const string Str_Speicherpfad = Speicherpfad_ermitteln(); 
const char* Speicherpfad = Str_Speicherpfad.c_str();
 
Uno Momento. Der Kollege spricht von wxWidgets, nicht von Windows MFC.(!)

Unter wxWidgets bekommt ihr den Programmpfad über Auswertung von wxApp::argv[0].
Beispiel: Das Programm heisst c:\programme\mannometer.exe. Dann steht "c:\programme\mannometer.exe" in argv[0]. Falls ihr den reinen Pfad braucht, gibt es in wxWidgets die Klasse wxFileName. Oder ihr schnippelt selbst den String hinterm letzten Backslash ab.
Was schön ist: An jeder Stelle im Programm kannst du auf theApp->argv[0] zugreifen.

Grüße
Onkel Schuppig.
 
Uno Momento. Der Kollege spricht von wxWidgets, nicht von Windows MFC.(!)
GetModuleFilename hat nichts mit MFC zu tun. GetModuleFilename ist eine Windows API Funktion.

Unter wxWidgets bekommt ihr den Programmpfad über Auswertung von wxApp::argv[0].
Beispiel: Das Programm heisst c:\programme\mannometer.exe. Dann steht "c:\programme\mannometer.exe" in argv[0].
Wenn das Programm allerdings als ".\foo\mannometer.exe" gestartet wurde, dann steht in argv[0] ".\foo\mannometer.exe" drin. Da muß man dann schon etwas mehr machen als nur nach dem letzten Slash/Backslash suchen.

Gruß
 
Wenn Portabilität egal ist, kann man ja GetModuleName() benutzen.

Wenn der Pfad ".\foo\mannometer.exe" heisst, ist das im Grunde ja nicht verkehrt. Es kommt darauf an, was man damit machen will.
 
Zurück