Announcement

Collapse
No announcement yet.

prüfen ob der papierkorb leer ist

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • prüfen ob der papierkorb leer ist

    mit welchem befehl kann ich prüfen ob der papierkorb leer ist?

    mfg

    markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Hallo Markus,

    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;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    StdCtrls;

    type
    TForm1 = class(TForm)
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    function SHEmptyRecycleBin(Wnd: HWnd;
    pszRootPath: PChar;
    dwFlags: DWORD): HRESULT; stdcall;

    implementation

    {$R *.DFM}

    uses ComObj;

    function SHEmptyRecycleBin;
    external 'SHELL32.DLL' name 'SHEmptyRecycleBinA';

    const
    SHERB_NOCONFIRMATION = $00000001;
    SHERB_NOPROGRESSUI = $00000002;
    SHERB_NOSOUND = $00000004;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    OleCheck(SHEmptyRecycleBin(Handle, nil,
    SHERB_NOCONFIRMATION or SHERB_NOPROGRESSUI));
    end;

    end.
    </pre>
    Über <b>SHQueryRecycleBin</b> kann man vorher nachschauen, wieviel im Papierkorb ist

    Comment


    • #3
      hallo andreas,

      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>

      mfg

      marku
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        äh, ich habe ie 5.5 drauf!!!!!
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          hallo andreas,

          im geschäft tut es unter nt auch nicht!!

          mfg

          marku
          Herzliche Grüße

          Markus Lemcke
          barrierefreies Webdesign

          Comment


          • #6
            Hallo,

            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.
            &#10

            Comment


            • #7
              wie finde ich das raus und woher bekomme ich dann die richtige dll?

              mfg

              marku
              Herzliche Grüße

              Markus Lemcke
              barrierefreies Webdesign

              Comment


              • #8
                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&gt

                Comment


                • #9
                  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&gt

                  Comment

                  Working...
                  X