Programmpfad ermitteln?
-
hmn da ist aber noch der programmname drin, wie kann ich den rauslöschen? vorallem wenn ich nicht weiß wie die *.exe heißt, falls der User die exe umbenannt hat?
-
Hi [...],
durchsuche einfach den String rückwärts nach einem Backslash. Der erste Backslash den du findest, ist der Trenner zwischen Pfad und Dateiname. Wenn du keinen Bachslash findest, ist ein Pfad vorhanden.
-
Herrmann schrieb:
Hi [...],
durchsuche einfach den String rückwärts nach einem Backslash. Der erste Backslash den du findest, ist der Trenner zwischen Pfad und Dateiname. Wenn du keinen Bachslash findest, ist ein Pfad vorhanden.Wie macht man sowas?
-
TCHAR appPath[MAX_PATH]; GetModuleFileName(NULL,appPath,MAX_PATH); // liefert z.B. "c:\blupp\hallo.exe" PathRemoveFileSpec(appPath); // jetzt ist nur noch "c:\blupp" übrig MessageBox(NULL,appPath,"blupp",MB_OK);
-
dafür muss man aber die shlwapi.h und shlwapi.lib inkludieren, das wollte ich eigentlich nicht
-
dann machs eben mit Strings oder willst du <string> auch nicht inkludieren
?
char appPath[MAX_PATH]; ::GetModuleFileName(NULL, appPath, MAX_PATH); std::string Path(appPath); Path = Path.substr(0, Path.rfind('\\'));
oder so aehnlich.
Gruss,
DeSoVoDaMu
-
ich benutze C
-
Dann halt in C:
char appPath[MAX_PATH]; ::GetModuleFileName(NULL, appPath, MAX_PATH); char* appName = strrchr( appPath, "\\" ); ++appName;
oder so ähnlich. In appName müsste dann der Programmname stehen.
Edit:
Sorry, Du willst ja nur den Pfad, außerdem erwartet strrchr ein Integerals Parameter. So sollte es gehen:
int ch = '\\'; char appPath[MAX_PATH]; ::GetModuleFileName(NULL, appPath, MAX_PATH); char* appName = strrchr( appPath, ch ); *appName = 0;
-
so z.b.
char programPath[MAX_PATH]; GetModuleFileName(GetModuleHandle(NULL), programPath, sizeof(programPath)); { char *str = strrchr(programPath, NULL, '\\'); if (str2) *str = 0; }
-
Hmm, so ist sogar noch besser!