Autor Beitrag
schitho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: So 17.08.03 15:55 
Hi,

ich verwende SHEmptyRecycleBin, um unter w2000 und w98 den Papierkorb zu leeren. Dies funktioniert bisher tadellos.

Fast....... :shock:

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:

ausblenden 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;
// leert den Papierkorb
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  { EmptyRecycleBin }
  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;

_________________
(Sorry! Leider ewiger Delphi-Neuling)