2009-08-10 6 views
2

Ich programmiere unter C++, MFC, Windows.So löschen Sie Ordner in den Papierkorb

Ich möchte einen Ordner in den Papierkorb löschen. Wie kann ich das tun?

CString filePath = directorytoBeDeletePath; 
    TCHAR ToBuf[MAX_PATH + 10]; 
    TCHAR FromBuf[MAX_PATH + 10]; 
    ZeroMemory(ToBuf, sizeof(ToBuf)); 
    ZeroMemory(FromBuf, sizeof(FromBuf)); 

    lstrcpy(FromBuf, filePath); 

    SHFILEOPSTRUCT FileOp; 
    FileOp.hwnd = NULL 
    FileOp.wFunc=FO_DELETE; 
    FileOp.pFrom=FromBuf; 
    FileOp.pTo = NULL; 
    FileOp.fFlags=FOF_ALLOWUNDO|FOF_NOCONFIRMATION; 
    FileOp.hNameMappings=NULL; 
    bRet=SHFileOperation(&FileOp); 

Irgendwas falsch mit dem obigen Code? Es ist immer fehlgeschlagen.

fand ich das Problem: filePath sein sollte: "c: \ abc" nicht "c: \ abc \"

Antwort

3

Der Rückgabewert von SHFileOperation ist ein int, und sollte den Fehlercode angeben. Was bekommst du?

0

Ich weiß es nicht der richtige Weg ist, aber wenn man eine Lösung finden können Sie dies versuchen ..

Download-Datei nircmd.exe oder eine andere exe, das Papierkorb leeren kann.

dann rufen Sie diese Funktionen vom System ("nircmd.exe emptybin")

+0

Vielen Dank ~~~~ – user25749