Hi,
ich verwende
SHEmptyRecycleBin, um unter w2000 und w98 den Papierkorb zu leeren. Dies funktioniert bisher tadellos.
Fast.......
Ein (kleines) Problem gibt es jedoch schon:
Ich hab auf meinem PC sowohl W98, als auch W2000 installiert. Über ein Bootmenü kann ich immer entscheiden, welche Partition ich starten möchte.
Meine Daten hab ich in einer weitere Partition abgelegt. Von beiden Windows-Betriebssystemen kann ich auf meine Daten zugreifen.
Wenn ich den Papierkorb unter W2000 mit SHEmptyRecycleBin leere, erhalte ich bei der nächsten Verwendung unter W98 die Meldung, dass der Papierkorb ein ungültiges Format hat, sobald ich eine Datei in den Papierkorb verschieben möchte.
Umgekehrt funktioniert es (leeren unter w98 und danach in W2000 eine Datei in den Papierkorb verschieben).
Dieses Problem tritt auch nur bei Verwendung von SHEmptyRecycleBin auf. Leere ich den Papierkrob unter W2000 mit den Betriebsmitteln (händisch), dann gibt es unter W98 keinen Fehler.
Woran kann dies liegen?
Ich verwende folgenden Code, um den Papierkorb zu leeren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure PapierkorbLeeren; const SHERB_NOCONFIRMATION = $00000001; SHERB_NOPROGRESSUI = $00000002; SHERB_NOSOUND = $00000004; type TSHEmptyRecycleBin = function(Wnd: HWND; pszRootPath: PChar; dwFlags: DWORD): HRESULT; stdcall; var SHEmptyRecycleBin: TSHEmptyRecycleBin; LibHandle: THandle; begin LibHandle := LoadLibrary(PChar('Shell32.dll')); if LibHandle <> 0 then @SHEmptyRecycleBin := GetProcAddress(LibHandle, 'SHEmptyRecycleBinA') else begin MessageDlg('Failed to load Shell32.dll.', mtError, [mbOK], 0); Exit; end;
if @SHEmptyRecycleBin <> nil then SHEmptyRecycleBin(Application.Handle, nil, SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI or SHERB_NOSOUND); FreeLibrary(LibHandle); @SHEmptyRecycleBin := nil; end; |