Probleme beim Auslesen der Dateien auf dem Desktop



  • Hi,

    ich hoffe es ist das richtige Unterforum.

    Ich will alle Dateinamen vom Desktop auslesen.
    Die Methode funktioniert soweit, es werden aber keine .lnk Dateien, also Verknüpfungen zurückgegeben. Alle weiteren Dateien sind da.

    Mein Code:

    void IconGetter::getIcons() 
    {
    	char path[MAX_PATH];
    
    	GetSpecialPath(CSIDL_DESKTOPDIRECTORY, path);
    
    	string sTmp(path);
    	sTmp = sTmp + "\\*";
    
    	HANDLE fHandle;
    	WIN32_FIND_DATA wfd;
    
    	fHandle=FindFirstFile((LPTSTR)sTmp.c_str(), &wfd);
    
    	do
    	{
    		// Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
    		// hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist
    		 if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
    		 {
    			 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    			 {
    				// Verzeichniss gefunden, sonstiger Code hier
    			 }
    			 else {       
    
    				// Datei gefunden, sonstiger Code hier
    
    			}
    		 }
    	}
    	while (FindNextFile(fHandle,&wfd));
    	FindClose(fHandle);
    
    }
    

    Hat jemand eine Idee woran es liegen kann`?

    Grüße
    Alex



  • Hallo,

    ich würde FindFirstFile mit einem konkreten Directory und File: . initialisieren. Dann kann man eigentlich alles darin finden.

    Ich meine konkret:

    string sTmp(path);
        sTmp = sTmp + "\\*.*"; //.* hinzugefügt.
    

Anmelden zum Antworten