![]() |
Windows in 5 Sekunden ausschalten, aber wie?
Hallo,
mein Vater wünscht sich ein kleines Tool mit dem er seinen Rechner schneller herunterfahren kann. Momentan dauert dies mehr als 30 Sekunden. Nun habe ich mein eigenes ShutDown Tool geschrieben welches aber immer noch nicht schnell genug für ihn ist. Ich habe im Internet ein Tool namens Super Fast ShutDown gefunden, dass den Rechner in 5 Sekunden ausschaltet. Ich frage mich, wie die Entwickler das gemacht haben? Wird da eine Windows Message oder direkt eine Message zum "Powerknopf" gesendet? Oder doch anders? Gruß Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Hallo!
Das Programm wird unter anderem die Zeit, die ein Programm zum beenden hat (standardmäßig 30sec glaube ich) einfach auf ein Minimum herabsetzen, denke ich mal. Grüße Faux |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Hi,
Eventuell wird der Parameter EWX_FORCRE bei ExitWindowsEx() verwendet. Damit werden laufende Anwendung auf eine nicht nette Weise beendet - und das ist schneller ;) mfG mirage228 |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Hier paar Tipps von Meister Google:
Zitat:
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
Als erstes das und dann gibt es noch so eine Option, dass die Auslagerungsdatei überschrieben wird beim Herunterfahren. Das kostet auch ganz schön Zeit. Die Option könntest du daher auch ggf. deaktivieren.
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
Danke für die Antworten.
EWX_FORCRE bei ExitWindowsEx() hab ich schon probiert, es ist zwar schneller, beendet alle Programme ohne Rücksicht auf Verlust, aber es dauert trotzdem noch lange. Zitat:
Gruß Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Wenn deinem Vater das herunterfahren zu lange dauert, dann sollte er denn Netzstecker ziehen. Das geht am schnellsten...
:angel2: :spin2: |
Re: Windows in 5 Sekunden ausschalten, aber wie?
... muss Dein Vater denn unbedingt zuschauen wie der Rechner ausgeht? :-)
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
Vielleciht geht der Rechner auch in Wirklichkeit in Suspend-to-Disk (und dreht dann irgendwie den Saft ab)? Ich hab' k. A. ob das (schneller) geht.
Ratte |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Zitat:
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
@noch_ein_hannes:
Er hat die Angewohnheit solange vor dem Rechner zu sitzen, bis das Lämpchen am Bildschirm rot blinkt. Erst dann ist er sich sicher, dass der Computer auch aus ist. Ich habe vorhin versucht den PC schneller zu machen, in dem ich die weiter oben erwähnten Werte in der Registry ändere, aber leider ohne Erfolg. |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Der Recner von meinem vater braucht auch ewig, im Vergleich zu meinem, zum Runterfahren, aber der hat auch mehr Programme in der TNA, als ich zusätzlich Anwendungen installiert. ;)
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
Anstatt das angesprochene "Super Fast Shutdown" Programm zu benutzen kann man auch gleich auf den Powerknopf drücken, Resultat ist das Gleiche.
Zitat:
![]() |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Moin. Schau dir mal AntiSpy XP an. Da gibt es eine Option "Schnelles Herunterfahren aktivieren". Vielleicht reicht das deinem Vater schon aus.
Man liest sich, Stanlay :hi: |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Man nehme einen Disassembler ...
Es ruft zum herunterfahren die NT-Native Funktion NtShutdownSystem mit dem Parameter ShutdownNoReboot auf und zum neustarten dasselbe, nur mit dem Parameter ShutdownReboot. Gute "Headerdateien" für die NT-Native-API findest du ![]() Jedoch bezweifle ich, dass diese Methode gut für einen Computer sein kann ... ciao, Philipp |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Danke c113plpbr, jedoch habe ich keine Ahnung, wie ich die Komponente verwende bzw. wie ich eine Disassembler baue.
Gruß Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Zitat:
Einfach die ntapi runterladen, in den Delphi-suchpfad einbinden, dann per
Delphi-Quellcode:
ins projekt einbinden, und dann irgendwo im quelltext
uses
JwaNative;
Delphi-Quellcode:
schreiben ...
NtShutdownSystem(ShutdownNoReboot);
-> gaaanz einfach ... ciao, Philipp |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Zitat:
:arrow: normal herunterfahren: 24s :arrow: Ruhezustand: 11s Das ganze bei einm Arbeitsspeicher von 512MB und mit nem AMD Sempron 2200+ (1,5GHz). Beide Messungen wurden nach einem Kaltstart gemacht. Das scheint mir auch ziemlich logisch: 512MB auf die Pladde schreiben braucht halt viel weniger Zeit, als die ganzen Dienste und Anwendungen zu stoppen und normal zu beenden. Denn so muss einfach nur kopiert werden und schon kann der Stecker gezogen werden. Dass der Start dadurch auch beschleunigt wird (45s statt 83s) is dann ja auch nur logisch. Hier muss ja bloß der Schmarn zurückkopiert und die Peripherie aktiviert werden. mfg, mh166 |
Re: Windows in 5 Sekunden ausschalten, aber wie?
@c113plpbr:
Hab mir nun mal die ntapi geladen, und das alles so gemacht wie du es geschrieben hast. Habs mit einem ButtonClick Ereignis verbunden, jedoch passiert nichts. Muss ich da noch irgend was anderes machen? Ich mühe mich gearde mal durch die jwanative durch, um zu verstehen was da passiert, aber momentan noch ohne erfolg. Gruß Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
So, habs nun denke ich geschafft, laufen tut's aber ob es so richtig ist, weiss ich nicht:
Delphi-Quellcode:
Gruß
uses
jwaNative; {$R *.dfm} function TForm1.ExWindows(const AFlag: Word): Boolean; var vi: TOSVersionInfo; hToken: THandle; tp: TTokenPrivileges; h: DWord; begin Result:=False; vi.dwOSVersionInfoSize:=SizeOf(vi); If GetVersionEx(vi) then begin If vi.dwPlatformId = VER_PLATFORM_WIN32_NT then begin If OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken) then begin LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid); tp.PrivilegeCount:=1; tp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED; h:=0; AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h); CloseHandle(hToken); //Hier nun der besondere Teil NtShutdownSystem(SHUTDOWNNOREBOOT); end; end Else Result:=ExitWindowsEx(Aflag, 0); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ExWindows(EWX_SHUTDOWN or EWX_FORCE); end; end. Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Jop, das sollte schon richtig sein, ich wusste bis vorhin nicht, dass man sich zum herunterfahren erst die rechte holen muss ...
... denn das shutdown-tool-dingens tut sowas ähnliches zwar, allerdings in sehr verkürzter form ... mich wunderts, dass das überhaupt funktioniert:
Code:
na egal ... ^^
Sub Main()
'N 00401630 51 push ecx 'N 00401631 8D442400 lea eax, dword ptr [esp] 'N 00401635 56 push esi 'N 00401636 50 push eax 'N 00401637 6A00 push 0 'N 00401639 6A01 push 1 'N 0040163B 6A13 push 13h 'N 0040163D C744241400000000 mov dword ptr [esp+14h], 0 'N 00401645 E8FFFFFCD2 call L0040131C 'N * API ref: RtlAdjustPrivilege 'N 0040164A 8B3510104000 mov esi, dword ptr [L00401010] 'N * ref: __vbaSetSystemError 'N 00401650 FFD6 call esi 'N 00401652 6A00 push 0 'N 00401654 E8FFFFFD0F call L00401368 'N * API ref: NtShutdownSystem 'N 00401659 FFD6 call esi 'N 0040165B 5E pop esi 'N 0040165C 59 pop ecx 'N 0040165D C3 ret End Sub ciao, Philipp |
Re: Windows in 5 Sekunden ausschalten, aber wie?
RtlAdjustPrivilege ist lediglich die bequeme (allerdings auch undokumentierte) Art Privillegien zu aktivieren bzw. deaktivieren.
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
@thomasw:
RtlAdjustPrivilege hab ich auch irgendwo gefunden, das war aber in VB, daher hab ich das sein lassen. @c113plpbr: Danke für den Hinweis mit der ntapi. :thumb: Danke nochmal an all SUPER Gruß Mazel |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Zitat:
|
Re: Windows in 5 Sekunden ausschalten, aber wie?
klar dauert supend-to-disk länger,
denn beim normalen runterfahren wird alles "nur" beendet, wären bei suspend-to-disk einiges runtergefahren und der RAM auf Festplatte gespeichert wird. Und die Festplatte ist nunmal nicht gerade schnell und es dauert halt etwas, bis z.B. bei mir so ein GB vom RAM auf Disk kopiert wurde. Aber das liegt nicht nur an der Festplatte ... Windows scheint es ja nicht zu schaffen nur die belegten Speicherbereiche abzuspeichern. |
Re: Windows in 5 Sekunden ausschalten, aber wie?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 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