fehler mit ShellExecute nur pro bestimmter dateiauswahl öffnen



  • ein Problem habe ich noch und zwar wie kann ich es ermöglichen das im Menü Save_As bei der Auswahl der Dateiendung nur die ShellExecute aufgerufen wird wenn man als Endung .mkr einstellt zurzeit öffnet sich Shell Execute sobald man auf speichern drückt bei allen Endungen

    Auswahl Code

    extern bool InitDateimenueSave (ProgrammInformation *info,OPENFILENAME *Dateiname,bool ismakroprojekt)
    {
    	static TCHAR szFilter[] =	TEXT("EX_PRESS - Dateien (*.FUP)\0*.FUP\0") \
    								TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \
    								TEXT("Alle Dateien (*.*)\0*.*\0\0");
    
    	static TCHAR szFilterMakro[] =	TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \
    									TEXT("Alle Dateien (*.*)\0*.*\0\0");	
    
    	(*Dateiname).lStructSize		= sizeof(OPENFILENAME);
    //	(*Dateiname).lStructSize		= sizeof(*Dateiname);
    	(*Dateiname).hwndOwner			= (*info).handles.Hauptfenster;
    	(*Dateiname).hInstance			= (*info).hInstance;
    
    	if (!ismakroprojekt)
    		(*Dateiname).lpstrFilter		= szFilter;
    	else
    		(*Dateiname).lpstrFilter		= szFilterMakro;
    
    //	(*Dateiname).lpstrFilter		= szFilter;
    	(*Dateiname).lpstrCustomFilter	= NULL;
    	(*Dateiname).nMaxCustFilter		= 0;
    	(*Dateiname).nFilterIndex		= 0;
    
    //	(*Dateiname).lpstrFile			= NULL;
    //	(*Dateiname).nMaxFile			= MAX_PATH;
    
    	(*Dateiname).lpstrFile			= Datei;
    	(*Dateiname).nMaxFile			= sizeof(Datei);/// sizeof(*Datei);;
    
    	(*Dateiname).lpstrFileTitle		= NULL;
    	(*Dateiname).nMaxFileTitle		= MAX_PATH;
    	(*Dateiname).lpstrInitialDir	= NULL;
    	(*Dateiname).lpstrTitle			= NULL;
    	(*Dateiname).Flags				= OFN_PATHMUSTEXIST | OFN_CREATEPROMPT;
    	(*Dateiname).nFileOffset		= 0;
    	(*Dateiname).nFileExtension		= 0;
    
    	if (!ismakroprojekt)
    		(*Dateiname).lpstrDefExt		= TEXT("FUP");
    	else
    		(*Dateiname).lpstrDefExt		= TEXT("MKR");
    
    	(*Dateiname).lCustData			= 0L;
    	(*Dateiname).lpfnHook			= NULL;
    	(*Dateiname).lpTemplateName		= NULL;
    
    	return true;
    
    };
    

    und jetzt der code zum save as Aufruf

    case ID_FILE_SAVE_AS :
    
    			{
    			//Dialog zum Speichern aufrufen
    			InitDateimenueSave(&Programminfo,&DateiMenue,ismakroprojekt);
    			DateiMenue.lpstrFile = Programminfo.Datei.FileName;
    			if(GetSaveFileName(&DateiMenue))
    			{
    				FehlerVar = DateiSpeichern(&Programminfo,DateiMenue,&BlockSpeicherHandle,&VerdrahtungsListenHandle);
    				if (FehlerVar != ok)
    				{
    					FehlerMeldung(FehlerVar,&Programminfo,0);
    					Programminfo.Datei.gespeichert = FALSE;
    					return 0;
    				}
    				else
    					Programminfo.Datei.gespeichert = TRUE;
    
    						ShellExecute(hwnd ,NULL,"C:\\test.exe",NULL, NULL, SW_HIDE);
    
    			}
    			else
    			{
    //				MeldeFehler(CommDlgExtendedError());
    			}
    			return 0;
    			};
    

Anmelden zum Antworten