wegen GetOpenFileName geht kein fopen und ShellExecute() mehr



  • Hallo !

    Wenn ich den Code unten aufrufen lasse und den Dateinamen in eine Listbox eintragen lasse gibt "fopen" immer NULL zurück und "ShellExecute()" funktioniert nicht mehr.
    Kann mit vielleicht jemand helfen ?

    Danke

    LPSTR CFilePlayer::OpenFileDlg(HWND hWnd,HWND hPlayList)
    {
    	LPSTR chFailure=TEXT("Canceled");
    	OPENFILENAME ofn;
    
    	ZeroMemory(&ofn,sizeof(OPENFILENAME));
    	ofn.lStructSize=sizeof(OPENFILENAME);
    	ofn.hInstance=NULL;
    	ofn.lpstrFilter=szFilter;
    	ofn.lpstrCustomFilter=NULL;
    	ofn.nMaxCustFilter=0;
    	ofn.nFilterIndex=0;
    	ofn.nMaxFile=MAX_PATH;
    	ofn.nMaxFileTitle=MAX_PATH;
    	ofn.lpstrInitialDir=NULL;
    	ofn.lpstrTitle=NULL;
    	ofn.nFileOffset=0;
    	ofn.nFileExtension=0;
    	ofn.lpstrDefExt=NULL;
    	ofn.lCustData=0L;
    	ofn.lpfnHook=NULL;
    	ofn.lpTemplateName=NULL;
    	ofn.hwndOwner=hWnd;
    	ofn.lpstrFile=chFileName;
    	ofn.lpstrFileTitle=NULL;
    	ofn.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
    
    	if(GetOpenFileName(&ofn)==TRUE)
    		return chFileName;
    	else
    		return chFailure;
    
    	return chFileName;
    }
    

    Aufruf:

    int ncount=(int)SendMessage(hPlayList,LB_GETCOUNT,0,0);
    						LPSTR chTmp;
    
    						chTmp=fileplayer->OpenFileDlg(hWnd,hPlayList);
    
    						if(chTmp=="Canceled")
    							return -1;
    
    						strcpy(pltitle[ncount].chPath,(const char*)chTmp);
    
    						sprintf(pltitle[ncount].chTitle,"%s",progctrl->ExtractPartOfStr(pltitle[ncount].chPath,'\\'));
    
    						SendMessage(hPlayList,LB_ADDSTRING,ncount,(LPARAM)pltitle[ncount].chTitle);
    


  • if(chTmp=="Canceled") return -1;

    Das wird so wohl nicht funktionieren -> lstrcmp
    btw sehe ich in deinem Code weder ein fopen noch ein ShellExecute 😕



  • GetOpenFileName änder das "Current Directory"



  • Häng das OFN_NOCHANGEDIR Flag noch mit an dann wird dein Arbeitsdirectory nicht gewechselt.
    Der Dateiname hat den ganzen Pfad zu sich mit dabei, so das man die Datei öffnen kann.

    ofn.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR;
    

Anmelden zum Antworten