SHFILEOPSTRUCT - Probleme mit FOF_NOERRORUI



  • Hallo zusammen,
    ich versuche gerade eine kleines BackUpProgramm zu schreiben, aber ich verzweifel langsam am FOF_NOERRORUI-Flag. Das Programm läuft hervorragend, wenn ich nur folgende Flags setze:
    FileCopyStruct.fFlags = FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION;
    Sämtliche Dateien werden ins Zielverzeichnis kopiert und Unterordner, falls erforderlich, erstellt.
    Sobald ich jedoch das FOF_NOERRORUI-Flag setze
    FileCopyStruct.fFlags = FOF_NOCONFIRMMKDIR | FOF_NOCONFIRMATION | FOF_NOERRORUI;
    kopiert er zwar immer noch meine Dateien, legt jedoch keine Unterverzeichnise mehr an.
    Ich hoffe, dass ihr mir helfen könnt, ich habe nämlich keine Ideen mehr. 😕



  • Ich kann das so nicht bestätigen. Ich habe das eben mal probiert (W2K SP3), und es funktioniert wie von Dir gewünscht:

    SHFILEOPSTRUCT shfos;
    
    shfos.hwnd                  = NULL;
    shfos.wFunc                 = FO_COPY;
    shfos.pFrom                 = TEXT("D:\\E\\F\\*.*\0");
    shfos.pTo                   = TEXT("F:\\Temp\0");
    shfos.fFlags                = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
    shfos.fAnyOperationsAborted = FALSE;
    shfos.lpszProgressTitle     = TEXT("ProgressTitle");
    
    SHFileOperation(&shfos);
    


  • @King: Ich habe Deinen Code eben auch noch mal getestet. Allerdings mit dem selben Ergebnis.

    #include "stdafx.h"
    #include <windows.h>
    
    int main(int argc, char* argv[])
    {
        SHFILEOPSTRUCT shfos;
    
        shfos.hwnd                  = NULL;
        shfos.wFunc                 = FO_COPY;
        shfos.pFrom                 = TEXT("C:\\Error.txt\0");
    
    // Läuft nicht
    // shfos.pTo          = TEXT("C:\\DOESNT_EXIST\\error.txt\0");  
    // shfos.fFlags       = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
    
    // Läuft
     shfos.pTo          = TEXT("C:\\DOESNT_EXIST\\error.txt\0");  
     shfos.fFlags       = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
    
        shfos.fAnyOperationsAborted = FALSE;
        shfos.lpszProgressTitle     = TEXT("ProgressTitle");
    
        SHFileOperation(&shfos);
    
        return 0;
    }
    

    Der Ordner "DOESNT_EXIST" wird nur angelegt, wenn ich FOF_NOERRORUI weglasse.
    Ich habe den Code auch auf meinem zweiten PC getestet, mit dem selben Ergebnis.
    Ich verwende auf beiden W2000/SP3 und VC++ 6.0.
    Ich versuche jetzt nochmal ein SP für das Visual Studio einzuspielen. Glaube kaum, dass das was bringt, aber was tut man nicht alles in der Verzweifelung.
    Danke, King, für die Arbeit die Du Dir gemacht hast. Sollte sonst noch jemand eine Idee haben, immer her damit... ich wär Euch sehr dankbar

    Nein, auch das ServicePack hat nichts gebracht...

    [ Dieser Beitrag wurde am 01.04.2003 um 19:37 Uhr von hwkks editiert. ]


Anmelden zum Antworten