Verzeichnis auswählen und Datei daraus verwenden



  • Hallo,
    bin neu hier und auch noch ziemlich neu in Visual C++ und überhaupt im programmieren neu. Bin jetzt schon seit 3 Tagen daran ein Problem zu lösen.
    Als Compiler hab ich VC++ 6.0.
    Mein Problem: Ich möchte in einem Programm nach einem Verzeichnis fragen ( dann öffnet sich ein Verzeichnis-Auswahl-Fenster) und anschließend irgendwann später im Programm in diesem ausgewählten Verzeichnis eine Datei ausführen,deren Namen mir bekannt ist. Ich weiss halt nur nicht das Verzeichnis der Datei,das kennt nur der Benutzer. Etwas kompliziert,glaub ich 🙂
    Also zum Öffnen des Verzeichnis-Auswahl-Fensters hab ich folgenden Code:

    void CTestDlg:: OnOK()
    {
    CoInitialize( NULL );

    BROWSEINFO bi;
    memset( &bi, 0, sizeof( BROWSEINFO ) );
    bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();
    bi.lpszTitle = "Bitte wählen Sie das Stationsverzeichnis...";
    bi.ulFlags = BIF_RETURNONLYFSDIRS;

    ITEMIDLIST* pList = SHBrowseForFolder( &bi );
    if( pList ) {
    char szFolder[MAX_PATH+1];
    if( SHGetPathFromIDList( pList, szFolder) ) {
    MessageBox( szFolder );
    }
    LPMALLOC pMalloc;
    if( S_OK == SHGetMalloc( &pMalloc ) ) {
    pMalloc->Free( pList );
    }

    }
    }

    Zum Öffnen der Datei hab ich folgenden Code:

    void CTestDlg::OnButton1()
    {
    ShellExecute(NULL, "open","gewünschten Pfad", NULL, NULL, SW_SHOW);
    }

    Wie bekomme ich nun an die Stelle "gewünschten Pfad" den Pfad hin,der vorher ausgewählt wurde.

    Ich danke allen,die mir helfen können.
    Bin kurz vorm verzweifeln.....

    gruß Popeye





  • Der ausgewählte Pfad steht in der Variable szFolder. Den musst Du nur in eine eine andere Variable retten, die nach Beenden der Funktion noch existiert. Ich habe die im Doc.

    ITEMIDLIST* pList = SHBrowseForFolder( &bi );
    	if( pList )
    		{
    			char szFolder[MAX_PATH+1]="";
    			if( SHGetPathFromIDList( pList, szFolder) )
    				{
    					m_csFolder=szFolder; //an dieser Stelle den Pfad in eine Variable speichern
    					m_csIniPath=m_csFolder+m_csFilename;
    					bFolderChanged=TRUE;
    				}
    
    			LPMALLOC pMalloc=NULL;
    			if( S_OK == SHGetMalloc( &pMalloc ) )
    				{
    					pMalloc->Free( pList );
    					pMalloc->Release();
    				}
    		}
    

    Für weitere Fragen sieh unter http://www.c-plusplus.net/forum/viewtopic-var-t-is-123220.html nach, ich hatte auch schon mal ein Problem damit.


Anmelden zum Antworten