Wie finde ich den Pfad meiner exe
-
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.