Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Windows-Defragmentierung durch Progg starten lassen (https://www.delphipraxis.net/98631-windows-defragmentierung-durch-progg-starten-lassen.html)

Aurelius 30. Aug 2007 10:26


Windows-Defragmentierung durch Progg starten lassen
 
Hallo DP'ler :winke:

Ich hab mal wo ein Programm gefunden welches die Windows-Defragmentiierung vor dem Starten aller anderen Programme aktiviert und wollte sowas in der Art auch machen. Mit Shellexecute + Pfad + Parameter würde das auch gehen.

Problem daran ist aber dass der Windows-Ordner-Pfad ja nicht überall gleich sein wird. unter "Start -> Ausführen" kann man ja per "defrag" + Parameter diese Defragmentierung starten. Wie bekomm ich das in mein Programm eingebaut?

Relicted 30. Aug 2007 10:38

Re: Windows-Defragmentierung durch Progg starten lassen
 
huhu!

dann such dir doch den windows pfad :-)

Guggst du hier


gruß
reli

hathor 30. Aug 2007 11:47

Re: Windows-Defragmentierung durch Progg starten lassen
 
So einfach, wie Du Dir das vorstellst, geht das nicht!
Du kannst nicht mit einem DELPHI-GUI-Programm vor dem Laden von Windows irgendetwas starten.

Das DEFRAG-Programm braucht exclusiven Zugriff auf das bearbeitete LW, deshalb ist es sinnvoll, es vor dem Laden des BS zu starten.
Ausserdem macht es die Arbeit nicht alleine, sondern startet je nach Aufgabe und Formatierung eines der folgenden Programme:

chkntfs.exe
dfrgntfs.exe

chkdsk.exe
dfrgfat.exe

Es ist sehr sinnvoll, wenn Du mal die Hilfe für Defrag (defrag.chm) liest!

Aurelius 2. Sep 2007 13:58

Re: Windows-Defragmentierung durch Progg starten lassen
 
Und wenn ich es bei Run-Once in der Registry eintrage? Dann sollte es doch gehen (da Windows ja schon geladen ist)?

Olli 2. Sep 2007 14:06

Re: Windows-Defragmentierung durch Progg starten lassen
 
Zitat:

Zitat von hathor
Das DEFRAG-Programm braucht exclusiven Zugriff auf das bearbeitete LW, deshalb ist es sinnvoll, es vor dem Laden des BS zu starten.

:shock: ... wie weiß denn dann das BIOS, wie es PE-Dateien laden soll?

Ich denke mal eher, daß du meinst daß es vor dem Win32-Subsystem gestartet werden muß.

Aber man kann diesen Vorgang ja planen (was dann nach dem Reboot ausgeführt wird).

Aurelius 2. Sep 2007 15:47

Re: Windows-Defragmentierung durch Progg starten lassen
 
Wenn man im CMD "defrag C:" eingibt defragmentiert er ja (soweit ichs mitbekommen hab). Wenn es also möglich wäre das im Shellexecute so einzuarbeiten müsste es ja gehen, oder?

Olli 2. Sep 2007 15:53

Re: Windows-Defragmentierung durch Progg starten lassen
 
Bei Google suchenBootExecute

Alternativ kannst du das selber schreiben und aufrufen: http://ddkwizard.assarbad.net

Phoenix 2. Sep 2007 16:30

Re: Windows-Defragmentierung durch Progg starten lassen
 
Zitat:

Zitat von xX0815Xx
Problem daran ist aber dass der Windows-Ordner-Pfad ja nicht überall gleich sein wird.

Delphi-Quellcode:
GetSpecialFolder
Damit bekommst Du den Windows-Ordern raus, wie auch immer er heissen mag.

Olli 2. Sep 2007 16:35

Re: Windows-Defragmentierung durch Progg starten lassen
 
Zitat:

Zitat von Phoenix
Zitat:

Zitat von xX0815Xx
Problem daran ist aber dass der Windows-Ordner-Pfad ja nicht überall gleich sein wird.

Delphi-Quellcode:
GetSpecialFolder
Damit bekommst Du den Windows-Ordern raus, wie auch immer er heissen mag.

Hmpf? Dieser Pfad ist doch immer registriert um aus diesem einfach was aufrufen zu können.

Achso und für native Programme ist es irrelevant.

T.E. 2. Sep 2007 17:41

Re: Windows-Defragmentierung durch Progg starten lassen
 
Mit folgender Funktion kannst du den Systempfad herausfinden:
Delphi-Quellcode:
function GetSystemDir: String;
var
  Dir: String;
  Len: DWord;
begin
  SetLength(Dir,MAX_PATH);
  Len:=GetSystemDirectory(PChar(Dir),MAX_PATH);
  if Len>0 then
  begin
    SetLength(Dir,Len);
    Result:=Dir;
  end
  else
    RaiseLastOSError;
end;
Wobei Gängige System-Verzeichnisse C:\Windows\System oder bei auf NT basierenden Betriebssystemen C:\Windows\System32 sind.
Und mit folgender kannst du das Windows-Verwzeichniss ermitteln:
Delphi-Quellcode:
function GetWinDir: String;
var
  Dir: String;
  Len: DWord;
begin
  SetLength(Dir,MAX_PATH);
  Len:=GetWindowsDirectory(PChar(Dir),MAX_PATH);
  if Len>0 then
  begin
    SetLength(Dir,Len);
    Result:=Dir;
  end
  else
    RaiseLastOSError;
end;
PS: Ich rufe meine Defragementierung in meinem Programm wie folgt auf...:
Delphi-Quellcode:
if ShellExecute(Application.Handle,
                 'open',
                 PChar('C:\Windows\System32\dfrgui.exe'),
                 Nil, Nil, SW_NORMAL) <= 32 then
    ShowMessage('Es ist ein Fehler aufgetreten');
Aber das ist halt nur das aufrufen dann musst du slebrer noch deine Parameter einfügen, aber man soll auch irgendwie einen button klick simulieren können


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz