![]() |
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? |
Re: Windows-Defragmentierung durch Progg starten lassen
|
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! |
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)?
|
Re: Windows-Defragmentierung durch Progg starten lassen
Zitat:
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). |
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?
|
Re: Windows-Defragmentierung durch Progg starten lassen
|
Re: Windows-Defragmentierung durch Progg starten lassen
Zitat:
Delphi-Quellcode:
Damit bekommst Du den Windows-Ordern raus, wie auch immer er heissen mag.
GetSpecialFolder
|
Re: Windows-Defragmentierung durch Progg starten lassen
Zitat:
Achso und für native Programme ist es irrelevant. |
Re: Windows-Defragmentierung durch Progg starten lassen
Mit folgender Funktion kannst du den Systempfad herausfinden:
Delphi-Quellcode:
Wobei Gängige System-Verzeichnisse C:\Windows\System oder bei auf NT basierenden Betriebssystemen C:\Windows\System32 sind.
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; Und mit folgender kannst du das Windows-Verwzeichniss ermitteln:
Delphi-Quellcode:
PS: Ich rufe meine Defragementierung in meinem Programm wie folgt auf...:
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;
Delphi-Quellcode:
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
if ShellExecute(Application.Handle,
'open', PChar('C:\Windows\System32\dfrgui.exe'), Nil, Nil, SW_NORMAL) <= 32 then ShowMessage('Es ist ein Fehler aufgetreten'); |
Re: Windows-Defragmentierung durch Progg starten lassen
Hab grad rausgefunden dass das Programm per
Delphi-Quellcode:
die Defragmentierung auch aufruft, also brauch ich den Windowsordner net mal...
ShellExecute(Application.Handle,
'open', 'defrag', PChar(Laufwerk), Nil, SW_NORMAL) Trotzdem Thx an alle! |
Re: Windows-Defragmentierung durch Progg starten lassen
Zitat:
Zitat:
|
Re: Windows-Defragmentierung durch Progg starten lassen
Den Post hatte ich net mehr gelesen...
|
Re: Windows-Defragmentierung durch Progg starten lassen
Kleiner Tipp:
![]() Das ist ein Programm und ein Bildschirmschoner mit dem man defragmentieren kann. Ausserdem gibt es noch eine DLL welche die Steuerung des Defagmentierens aus eigenen Programmen (also auch von Delphi aus) heraus ermöglicht. Wird normalerweise über Kommandozeile gesteuert aber es gibt auch ein GUI. Das Teil benutzt zum Defragmentieren das offizielle API von Microsoft. Sollte für dein Problem (hoffentlich) ganz hilfreich sein. |
Re: Windows-Defragmentierung durch Progg starten lassen
Werd ich mal gucken :thumb:
|
Re: Windows-Defragmentierung durch Progg starten lassen
Auch wenn es schon ziemlich alt ist:
Delphi-Quellcode:
Wenn ich das aufrufe sehe ich kurz ein schwarzes Fenster was aber nicht da bleibt, deframentiert windows dann im hintergrund oder geht das so nicht?
ShellExecute(Application.Handle,
'open', 'defrag', PChar(Edit1.text), Nil, SW_NORMAL) |
Re: Windows-Defragmentierung durch Progg starten lassen
Zitat:
Mach mal ein cmd auf (Start -> Ausführen -> cmd) und gib dort defrag mit Deinen Parametern ein. |
Re: Windows-Defragmentierung durch Progg starten lassen
funktioniert doch, hab im edit das c:\ falsch geschrieben!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 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