Festplatte komplett durchsuchen --> Problemos!



  • Hi, Folgendes:

    #include "windows.h"
    #include "stdio.h"
    #include "conio.h"
    
    void fchrf(const char *szChrStartPath);
    
    void main(void)
    {
        fchrf("C:\\");
        getch();
    }
    
    void fchrf(const char *szChrStartPath)
    {
        char szPATH[MAX_PATH];
        strcpy(szPATH, szChrStartPath);
        if(szPATH[strlen(szPATH)-1] != '\\')
            strcat(szPATH, "\\");
        strcat(szPATH, "*.*");
        WIN32_FIND_DATA data;
        HANDLE handle = FindFirstFile(szPATH, &data);
        if(handle != INVALID_HANDLE_VALUE)
        {
            do
            {
                if(data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && data.cFileName[strlen(data.cFileName)-2] != '.' && data.cFileName[strlen(data.cFileName)-1] != '.')
                {
                    char szMsg[MAX_PATH];
                    sprintf(szMsg, "%s\\%s", szChrStartPath, data.cFileName);
                    fchrf(szMsg);
                }
                else if(data.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY && data.cFileName[strlen(data.cFileName)-2] != '.' && data.cFileName[strlen(data.cFileName)-1] != '.')
                    printf("%s\n", data.cFileName);
            }
            while(FindNextFile(handle, &data) != 0);
        }
        FindClose(handle);
    }
    

    Das war jetzt mal ein einfaches Beispiel, um alle Dateien auf der kompletten Festplatte an zu zeigen. Jetzt gibt's folgendes Problem. Ich möchte eine solche Suchfunktion in ein API Programm einbauen. Wenn ich dies so übernehme, wird das Programm aber die ganze Zeit hängen, während er sucht! Ich habe da schoneinmal einen Thread erstellt:

    void __edecl Search(void *pParams)
    {
       // Suchen
    }
    
    // Thread starten:
    _beginthread(Search, 0, NULL);
    

    Jetzt weiß ich nicht, wie ich in void *pParams z.B. ein const char übergeben kann...
    Und noch ein Problem: wahrscheinlich werde ich den Such-Code in den Thread nicht so ohne Weiteres hineinpacken können, oder? Denn, ... hmmmff... schwer... Kann ich im Thread (da wo im alten Such-Code dann fchrf() aufgerufen wird) einfach nochmal _beginthread() machen oder... Bitte helft mir, es soll perfekt laufen dass alle Verzeichnisse von C:\\ durchsucht werden...

    Bis dann,
    tschüss



  • hat sich erledigt



  • Da freun wir uns 😉 😃



  • *G*


Anmelden zum Antworten