Wie finde ich den Pfad meiner exe
-
Wie finde ich den Pfad meiner exe.
-
Könnt ihr nicht einmal in die FAQ schauen???
-
Im MFC habe ich nichts gefunden.
-
Wer lesen kann ist klar im Vorteil:
akt. Dateipfad des programms auslesen... (FAQ MFC)
-
Ich habe es so gemacht:
CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\'));
Aber ich habe das Problem das der pfad nicht c:\lalilu.exe sonder "c:\lalilu.exe dadruch ist das nicht so toll.Was kann ich dagegen tuhen
-
immer mit GetModuleFileName sicherheitshalber
wenn du CString nehmen willst dann nutze CString::GetBuffer(MAX_PATH) und anschließend CString::ReleaseBuffer()
Der Rest steht in der FAQ
-
ich habs mal so versucht:
char filename[MAX_PATH], dir[MAX_PATH], buffer[MAX_PATH], finalname[MAX_PATH], finalpath[MAX_PATH]; GetModuleFileName(NULL,dir,MAX_PATH); GetFileTitle(dir,buffer,MAX_PATH); memset(finalname,0,MAX_PATH); strncpy(finalname,dir,strlen(dir)-strlen(buffer));
aber bei langen verzeichnisen kommt er nich mit.
zbC:\Programme\Microsoft Visual Studio\MyProjects\TestProgamm\Release\TestProgamm
aber er heist eigentlich
C:\Programme\Microsoft Visual Studio\MyProjects\TestProgamm\Release\TestProgamm\RC1
-
Ich finde da schon ok:
CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\'));
ausser das halt am afang son " is aich will ja nur das das weg is
-
Mach es, wie es in der FAQ steht! Das ist getestet und funktioinert!
Verwende am Besten den ersten Vorschlag, der mit GetModuleFileName arbeitet.
[ Dieser Beitrag wurde am 09.08.2002 um 14:49 Uhr von dEUs editiert. ]
-
Wenn ich wüste wie.
-
Hey, das mit den Anführungszeichen ist mir noch gar nicht aufgefallen.
Abhilfe schafft dieser Code:CString strPath = CString( GetCommandLine()).Mid( 1, CString(GetCommandLine()).ReverseFind('\\')-1);
Alternativ kann man auch nach der Zeile ein Replace machen:
CString strPath = CString( GetCommandLine()).Left( CString(GetCommandLine()).ReverseFind('\\')); strPath.Replace( "\"", "");
@dEUs: Kannst die FAQ mal wieder updaten.
-
Was muss ich machen das Name.exe am Pfad dran bleibt.
-
Ein wenig mitdenken!!
Schau, was GetModulFileName macht, der Rest sollte dann klar sein!
-
Ich habe schon einiges versucht z.b 1und -1 zu löschen uns so weiter.Aber dann bekomme ich z.b nur den exen namen und nicht mehr den pfad usw.
-
Also man sollte doch mal gnädig sein und es ihm sgane wenn er es nicht so kapiert, oder?
Hier mal so ähnlich wie in der FAQ:const DWORD dwBuffer = 100; char strPath[dwBuffer] = ""; CString strBuffer = ""; int nPoint = 0; //Finden des Pfades in der sich die exe befindet. //Speicherung des Pfades in die //Membervariable m_strFilePath nPoint = GetModuleFileName(NULL,strPath,dwBuffer); //holt sich den Pfad der Anwendung + Dateinamen strPath[nPoint-11] = '\0';//schneidet den Dateinamen der Anwendung // ab, musst die Anzahl der Stellen wissen. Also Dateinamen // + Endung, hier support.exe == 11 Stellen strBuffer = (CString) strPath;
So dass müsste dir doch helfen oder?
-
Ja sowit war ich auch schon nur der name der exe ist variabel.
-
Da ja irgendwie manche die FAQ nicht verstehen
:
CString GetModulePath(HMODULE hmod=0,bool fullPath=false) { CString str; GetModuleFileName(hmod,str.GetBuffer(MAX_PATH),MAX_PATH); str.ReleaseBuffer(); if(!fullPath) { int pos=str.ReverseFind('\\'); if(pos!=-1) str.Delete(pos,str.GetLength()-pos); } return str; }
/E: Beispiel:
void CTestDlg::OnOK() { AfxMessageBox(GetModulePath()); // Nur der Pfad AfxMessageBox(GetModulePath(0,true)); // Pfad+Exe // oder: CString meinPfad=GetModulePfad(); }
[ Dieser Beitrag wurde am 27.08.2002 um 13:52 Uhr von Nemesyzz editiert. ]
-
error C2601: 'GetModulePath' : Lokale Funktionsdefinitionen sind unzulaessig
-
Dann hau die Funktion halt in die Klasse, wenn der VC++ das nicht auf die Reihe bekommt. Wenn ich mir das alles anschaue, dann lobe ich mir wirklich die VCL.
-
Die Fehlermeldung kommt, weil du irgendwo ne schliessende geschweifte Klammer (}) vergessen hast.