![]() |
Ordnerinhalt löschen
Hi @ all!
Habe folgendes Problem: Ich möchte gerne den Inhalt eines Ordners löschen, aber nicht den Ordner selber. Es geht um den Ordner "Temporary Internet Files". Ich weiss, wie man einzelne Dateien löscht, aber wie stelle ich das an, dass der GESAMTE Ihnalt gelöscht wird?! DANKE Chriss :coder: |
Moin Chriss,
schau Dir mal die API Funktion DeleteUrlCacheGroup an. Damit könnte das (fast) gehen. Statt der einzelnen Einträge soll man damit Gruppen löschen können. |
du muss, sofern es keine extra Funktion dafür gibt (kenne keine), alle Dateien mit einer Schleife nacheinander durch gehen. Soweit ich mich nicht täusche müsste dir da FindNext weiterhelfen
|
Zitat:
oder sollte ich eine erstellen, die garantiert ganz oben steht?! und dann die frage: wie erstelle ich die datei? |
Dann kuck dir mal FindFirst an ;-)
|
Nur so als Tip: Zumindest unter 2000 und XP dürfte es nicht klappen, die Cache-Dateien über FindFirst/Next und DeleteFile zu löschen. Bei den anderen Versionen bin ich mir nicht sicher, aber du solltest dir Christian Seehases Post nochmal ansehen.
|
Moin Chriss,
bevor Du jetzt lange mit FindFirst/FindNext anfängst zu experimentieren: Temporary Internet Files ist ein spezieller Systemfolder, der nicht mit den normalen Standardfunktionen bearbeitet werden kann. Dafür wirst Du, aus der Unit WinInet die API Funktionen FindFirstUrlCacheEntry(Ex)/FindNextUrlCacheEntry(Ex) usw. benötigen. Beispiele dafür solltest Du hier im Forum einige finden. Weitere Einzelheiten kannst Du dem PSDK oder, online, dem MSDN (msdn.microsoft.com) entnehmen. |
Mhm ok. Zum löschen der Temporary Internet Files gibt es anscheinend wirklich eine extra Funktion. Wieder was dazu gelernt...
|
Re: Ordnerinhalt löschen
Hallo Chris!
Hier der versprochene Code. Aber wie schon gesagt, der ist nicht von mir und ich weiss auch nicht mehr woher ich den habe! Sorry!
Code:
Viel Spass dabei!
procedure DeleteIECache;
var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if hCacheDir <> 0 then begin repeat DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); FreeMem(lpEntryInfo, dwEntrySize); dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize); end; FreeMem(lpEntryInfo, dwEntrySize); FindCloseUrlCache(hCacheDir); end; Gruss Eleonora |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz