Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
wenn mindestens der Internet Explorer 4 installiert ist oder eine neuere Windows-Version verwendet wird, sollte der folgende Weg funktionieren, um den Papierkorb zu leeren:
<pre>
unit Unit1;
wie rufe ich <b>SHQueryRecycleBin</b> auf?<br>
ich habe bei mir den verdacht, dass aus welche gründen auch<br>
immer, die funktion SHEmptyRecycleBinA' unter nt <b>nicht</b>
in der shell32.dll ist!! ich habe sie durchsucht und sie war nicht<br>
auffindbar.<br>
in der Hilfe zum Platform-SDK stehen die folgenden Anforderungen für die API-Funktion SHEmptyRecycleBin:
<i>Requirements <br>
Version 4.71 and later of Shell32.dll<br>
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later). <br>
Windows 95/98: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later). <br>
Header: Declared in shellapi.h. <br>
Import Library: shell32.lib.<br> </i>
Wenn der Aufruf dieser API-Funktion unter NT 4 fehlschlägt, würde ich zuerst nachsehen, ob dort auch wirklich die Version <b>4.71</b> (oder höher) von SHELL32.DLL im System32-Unterverzeichnis liegt.


Hallo,<p>ich habe folgendes Problem:<br>Ich ermittle die Version der Datei shell32.dll. Ist die Version grösser 4.71 soll die Funktion (Löschen des Papierkorbs) ausgeführt werden, ansonsten bekommt der Anwender eine Meldung, dass eine neue Version von shell32.dll benötigt wird.<br>Wenn ich den Papierkorb versuche zu löschen bekomme ich eine Meldung vom Programm: <I>Der Parameter stimmt nicht.</i> Was kann die Ursache sein. Hier der Quellcode:
<pre>
public
{ Public-Deklarationen }
bDLL: Boolean;
end;
<p>
implementation
<p>
uses ComObj;
<p>
const
SHERB_NOCONFIRMATION = $00000001;
SHERB_NOPROGRESSUI = $00000002;
SHERB_NOSOUND = $00000004;
FileDirDLL: string = 'c:\windows\system\shell32.dll';
<p>
type
TSHEmptyRecycleBin = function(Wnd: HWnd; pszRootPath: PChar; dwFlags: DWORD): HRESULT;
<p>
var
FSHEmptyRecycleBin: TSHEmptyRecycleBin;
<P>
procedure TForm1.Button1Click(Sender: TObject);
var
hDLL: THandle;
begin
if bDLL then Abort;
hDLL := LoadLibrary(PChar(FileDirDLL));
if hDLL <> 0 then
begin
@FSHEmptyRecycleBin := GetProcAddress(hDll, 'SHEmptyRecycleBinA');
if Assigned(FSHEmptyRecycleBin) then
begin
bDLL := True;
OleCheck(FSHEmptyRecycleBin(Handle, nil, SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI));
if bDLL then
begin
FreeLibrary(hDLL);
FSHEmptyRecycleBin := nil;
bDLL := False;
end;
end else
MessageBox(Handle, 'DLL-Funktion nicht gefunden (SHELL32.DLL)!', nil, MB_OK or MB_ICONSTOP);
end else
MessageBox(Handle, 'Fehler beim Laden der DLL: SHELL32.DLL!', nil, mb_OK or mb_ICONSTOP);
end;
</pre>
Hallo,<p>
nach langem suchen hab ich den Fehler gefunden. Der Fehler <I>Der Parameter stimmt nicht</I> kommt daher, dass ich <b>stdcall</b> vergessen habe. Folgende Zeile lautet also:
<pre>
type
TSHEmptyRecycleBin = function(Wnd: HWnd; pszRootPath: PChar; dwFlags: DWORD): HRESULT; stdcall;
</pre>
Comment