Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Windows Temp komplett löschen !?! wie ? (https://www.delphipraxis.net/3595-windows-temp-komplett-loeschen-wie.html)

Trouble_Maker 20. Mär 2003 12:17


Windows Temp komplett löschen !?! wie ?
 
Hiho Leute!
ich möchte den Inhalt von meinem windows/Temp Ordner komplett löschen !!! (C:\Windows\Temp)
Hier mein Code! (also der Inhalt wird schon außer den Unterverzeichnissen komplett gelöscht! Diese möchte ich aber auch löschen!!!

Delphi-Quellcode:
uses
... ,ShellAPI;

var
  Form1: TForm1;
  fos: TSHFileOpStruct;


function DelDir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc := FO_DELETE;
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
    pFrom := PChar('C:\Windows\Temp\' + #0);
  end;
  Result := (0 = ShFileOperation(fos));
end;

procedure DeleteAll(Dir, Files : string);
var
  SearchRec : TSearchRec;
begin
  if FindFirst(Dir+Files, faAnyFile, SearchRec) = 0 then
    begin
      DeleteFile(SearchRec.Name);
      while FindNext(SearchRec) = 0 do
        DeleteFile(Dir + SearchRec.Name);
    end;
  FindClose(SearchRec);
end;

procedure TForm1.Button2Click(Sender: TObject);
var dir : string;
begin
      DelDir(dir);
      DeleteAll( 'C:\Windows\Temp\' , '*.*' );
      RemoveDir('C:\Windows\Temp\');
end;

end.
so... kann mir jemand sagen, wieso die Unterverzeichnisse nicht gelöscht werden ? Der Rest klappt ja!

danke

Trouble_Maker

[EDIT=Luckie]Delphi-Tags hinzugefügt. Beim nächsten mal bitte selber machen, danke[/EDIT]

Darty 20. Mär 2003 12:43

Wird der Inhalt der Unterverzeichnisse auch gelöscht ? :?:

Trouble_Maker 20. Mär 2003 12:45

nein wird er nicht!!!

HILFEEE ^^

BrainCode 20. Mär 2003 13:41

Soll das bei jedem Systemstart ausgeführt werden? Dann kannst du ja auch ein Batchfile schreiben, das du in den Autostartordner legst, etwa so (ist auch bei mir so):
Code:
@echo off
deltree /y c:\windows\temp

CalganX 20. Mär 2003 13:53

Hi,
ich bitte dich dein Code absofort in [ delphi] [ /delphi] einzupacken (ohne die Leerzeichen). Danke.
Ich habe deinen Source einwenig verändert:
Delphi-Quellcode:
uses
{...} ,ShellAPI;

var
  Form1: TForm1;

function DelDir(dir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do begin
    wFunc := FO_DELETE;
//    fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
// nimm das mal heraus, um zu sehen, was er dir ausgibt
    pFrom := PChar(dir + #0#0);
  end;
  Result := (0 = ShFileOperation(fos));
end;

procedure DeleteAll(Dir, Files : string);
var
  SearchRec : TSearchRec;
begin
  if FindFirst(Dir+Files, faAnyFile, SearchRec) = 0 then begin
    DeleteFile(SearchRec.Name);
    while FindNext(SearchRec) = 0 do
    DeleteFile(Dir + SearchRec.Name);
  end;
  FindClose(SearchRec);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  dir : string;
begin
//  DelDir(dir); ? Was machst du denn hier ? dir ist noch leer!!
  dir := 'C:\Windows\Temp\'; // sicher, dass es nicht "C:\WINDOWS\..." ist?
  DelDir(dir);
  DeleteAll(dir, '*.*' );
//  RemoveDir(dir); Hast du doch schon einmal gemacht... :?
end;
Änder das mal und sage uns mal was ausgegeben wird...
Desweiteren: such mal in der CodeLibrary nach "DoFileWork". Die Funktion von sakura kann das ganz gut und macht auch keine Probleme...

Chris

Trouble_Maker 20. Mär 2003 19:59

hi...
ja ok mach ich ab jetzt!!! Ich wollt immer schon wissen, wie ihr das "graue" um den Code bekommt *gg*

Leider kann ich deinen Code jetzt leider nich austesten, weil ich an einem anderen PC bin!
Aber morgen poste ich, ob es geklappt hat!

Und ich möchte das ncih bei jeden Systemstart machen! Nur wenn man einen Button klickt

bis dann

Trouble_Maker

RomanK 20. Mär 2003 20:33

Hoi,
dazu gibt es neben dem Run auch noch den RunOnce "Ordner" in der Registry.

Trouble_Maker 21. Mär 2003 15:03

hmm... so hab den Code mal ausgetestet, so wie du ihn gepostet hast, aber es passiert das gleiche wie vorher !!!

Also keine Fehlermeldung oder so! Aber die Unterverzeichnisse und die in den Unterverzeichnissen liegenden Dateien werden nicht gelöscht!!!

?!?!


Trouble_Maker

CalganX 21. Mär 2003 15:47

Zitat:

Zitat von Chakotay1308
Such mal in der CodeLibrary nach "DoFileWork". Die Funktion von sakura kann das ganz gut und macht auch keine Probleme...

Das auch schon gemacht? Die Funktion funktioniert einwandfrei!

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 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