Aktuelles Verzeichnis ermitteln



  • Hi,
    ich möchte dass der benutzer nur dateien aus dem Verzeichnis wählen kann in dem auch die Programmdatei liegt. Bisher habe ich die auswahl auf pdf-dateien beschränkt:

    char szFilters[] = "Adobe PDF-Dateien (*.pdf)|*.pdf||";
    CFileDialog m_ldFile(TRUE, "Adobe PDF-Dateien", "*.pdf", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);
    if (m_ldFile.DoModal() == IDOK)
    {
    ....
    }
    

    Aber wie beschränke ich das ganze jetzt noch auf ein bestimmtes verzeichnis? und eben auf das verzeichnis wo auch die exe datei liegt?



  • Den Aktuelen Pfad in dem die exe ausgeführt wird könntest du z.b. so ermitteln:

    CString szDir = GetCommandLine(); // gibt dir verzeichniss+exe zurück
    	szDir = szDB.Mid(1,szDB.Find("NameDerExe.exe",0);
    

    Den Auswahldialog kannst du glaub ich nicht beschränken aber du kannst prüfen ob das Verzeichniss das ausgewählt wurde das richtige ist:

    CFileDialog m_ldFile(TRUE, "Adobe PDF-Dateien", "*.pdf", OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this); 
    if (m_ldFile.DoModal() == IDOK) 
    { 
       CString szPathName;
       szPathName = m_ldFile.GetPathName();
       if (szDir.Compare(szPathName) != 0) return;
    }
    

    so oder so ähnlich



  • Du kannst der folgende code 😮 benutzen

    CString pfad="";
    	char buffer[_MAX_PATH];
    	if( _getcwd( buffer, _MAX_PATH ) == NULL )
          perror( "_getcwd error" );
       else
          printf( "%s\n", buffer );
    	pfad = buffer;
    

    und die include sätzue auch einfügen

    #include <afxwin.h>
    #include <afxinet.h>
    #include <stdio.h>
    #include <direct.h>
    


  • In den FAQ steht dazu auch einiges... 🙂


Anmelden zum Antworten