Zugriff auf Windows: Papierkorb leeren
-
Was für eine MessageBox bekommst du denn jetzt ausgegeben - oder bekommst du irgendwelche Fehler?!
-
also ich führe folgenden Code aus:
//--------------------------------------------------------------------------- bool CanEmptyRecycleBin() { HRESULT Success = 0; SHQUERYRBINFO info; // SHQUERYRBINFO die Variable info zuweisen ZeroMemory(&info, sizeof(info)); // ? Speicher auf null setzen ? info.cbSize = sizeof(info); // info und DWORD cbSize verknüpfen Success = SHQueryRecycleBin(0, &info); // SHQueryRecycleBin aufrufen if (Success != S_OK) { MessageBox(NULL, "Fehler bei SHQueryRecycleBin", "Fehler!", MB_OK|MB_ICONERROR); return FALSE; } return (info.i64NumItems > 0); // zurück wenn info.i64NumItems grösser als 0 } //--------------------------------------------------------------------------- void __fastcall TForm1::Label3Click(TObject *Sender) { if(CanEmptyRecycleBin()) //sollte hier nicht eigentlich ein vergleich hin ? und wenn ja was für einer ? { MessageBox(NULL, "Papierkorb kann geleert werden", "info", MB_OK); // .. } else MessageBox(NULL, "Papierkorb schon leer", "info", MB_OK); } //---------------------------------------------------------------------------und als fehlermeldung gibt mein Compiler Folgendes aus:
"W8004 'Success' is assigned a value that is never used"
(naja ist halt nur wegen der Vereinbarung ...)
und es kommt natürlich auch nur eine MessageBox (Papierkorb schon leer).
Irgent welche Ideen ?
-
TheGeek schrieb:
"W8004 'Success' is assigned a value that is never used"
Das hört sich nur nach einer Warnung an - kein Fehler! Aber du könntest es mal so versuchen:
HRESULT Success = SHQueryRecycleBin(...);TheGeek schrieb:
und es kommt natürlich auch nur eine MessageBox (Papierkorb schon leer).
Dass nur eine MessageBox kommt ist ja eigentlich gut

Ist der Papierkorb denn eigentlich nicht leer, oder wo liegt dein Problem
-
uii das gefällt ihm gar nicht

wenn ich statt:
HRESULT Success = 0;HRESULT Success = SHQueryRecycleBin(...);nehme dann kommt "Expression syntax" (falsche Syntax !?) als Fehler.
Naja eigentlich will ich ja nur wissen ob der Paperkorb voll oder leer ist ...
Ist das echt so schwer ?Wenn ja ist das ja eine tolle ironie:
Daten löschen = voll einfach
ABER
Gugen ob Daten im Papierkorb sind = schwer
-
TheGeek schrieb:
HRESULT Success = SHQueryRecycleBin(...);die punkte bedeuten das du den syntax schon gebehalten sollst oder den entsprechenden einfügst.
HRESULT Success = SHQueryRecycleBin(0, &info);TheGeek schrieb:
Naja eigentlich will ich ja nur wissen ob der Paperkorb voll oder leer ist ...
Ist das echt so schwer ?aller anfang ist schwer
TheGeek schrieb:
if(CanEmptyRecycleBin()) //sollte hier nicht eigentlich ein vergleich hin ? und wenn ja was für einer ?ist ein vergleich, und zwar ob die funktion (oder variable) true ist.
du könntest auch schreibenif(CanEmptyRecycleBin() == true)
-
NEBENBEI:
Kann man eigentlich bei jeder boolischen if verzweigung das "== true" weglassen ? Oder geht das nur bei eigenen Funkionen ?//-------------------------------------------------------------------
mhh hatt sich leider nix verändert Success fehler kommt weiterhin ...
-
TheGeek schrieb:
NEBENBEI:
Kann man eigentlich bei jeder boolischen if verzweigung das "== true" weglassen ?hab ich doch geschrieben. ja kann man.
[edit]
mach malHRESULT Successwenn immernoch die warnung kommt dann lebe mit der warnung

-
TheGeek schrieb:
mhh hatt sich leider nix verändert Success fehler kommt weiterhin ...
Wir hatten doch schon auf Seite 1 festgestellt, das ab Windows 2000 nicht NULL als erster Parameter angegeben werden darf...

-
mhhh !?! Das muss doch irgentwie gehen ???
Aber find es super cool das man hier im forum solch tolle hilfen bekommt !

Warum gibbet eigenlich ne Microsoft Site die einem weiter helfen kann ???
Das was ich bis jetzt so gesehen habe, habe ich noch nicht so ganz verstanden
... habt ihr schon mal geschaut ?...
-
Na gib halt nen Pfad als ersten Parameter an, genau wie auf "der Microsoft Hilfeseite" (das ist die MSDN) beschrieben ist...
Success = SHQueryRecycleBin("C:\\", &info);
-
nope ! Geht auch net !

-
Könntest du evtl. mal etwas ausführlicher sagen, was du jetzt hast, wie dabei dein Ergebnis (fälschlicherweise?) aussieht und was du dir als Ergebnis wünscht?!
Denn aus deinen bisherigen Aussagen wurde ich nicht so recht schlau, was eigentlich überhaupt nicht funktioniert
-
Sorry Leuts konnte net Posten weil ich so viel um die Ohren hatte

Also ich führe folgenden Code aus:
//--------------------------------------------------------------------------- bool CanEmptyRecycleBin() { HRESULT Success = SHQueryRecycleBin(0, &info); SHQUERYRBINFO info; // SHQUERYRBINFO die Variable info zuweisen ZeroMemory(&info, sizeof(info)); // ? Speicher auf null setzen ? info.cbSize = sizeof(info); // info und DWORD cbSize verknüpfen Success = SHQueryRecycleBin("C:\\", &info); // SHQueryRecycleBin aufrufen if (Success != S_OK) { MessageBox(NULL, "Fehler bei SHQueryRecycleBin", "Fehler!", MB_OK|MB_ICONERROR); return FALSE; } return (info.i64NumItems > 0); // zurück wenn info.i64NumItems grösser als 0 } //--------------------------------------------------------------------------- void __fastcall TForm1::Label3Click(TObject *Sender) { if(CanEmptyRecycleBin()) { MessageBox(NULL, "Papierkorb kann geleert werden", "info", MB_OK); // .. } else MessageBox(NULL, "Papierkorb schon leer", "info", MB_OK); } //---------------------------------------------------------------------------und als Ergebnis wünsch ich mir das ich rausbekomme ob der Papierkorb voll oder leer ist ...
-
Abgesehen von einem kleinen Fehler funktioniert dein Code bei mir (W2K)

Du musst info erst deklarieren und dann verwenden, nicht andersrum

Also diese Zeile muss eins weiter nach oben:SHQUERYRBINFO info; // SHQUERYRBINFO die Variable info zuweisenWobei dein Kommentar nicht so sehr Sinn macht bzw. flasch ist - SHQUERYRBINFO ist der Typ der Variable info, die du deklarierst.
-
Naja der Code funzt aber leder gibt er net das richtige zurück bei mir kommt immer nur die MessageBox "Papierkorb schon leer" egal ob er voll oder leer ist ... bei dir auch Flenders ?
-
Nein, wenn ich bei mir von Laufwerk C etwas lösche kommt, dass der Papierkorb gelöscht werden kann
