Delphi-PRAXiS
Seite 2 von 3     12 3      

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 in 5 Sekunden ausschalten, aber wie? (https://www.delphipraxis.net/59958-windows-5-sekunden-ausschalten-aber-wie.html)

Mazel 31. Dez 2005 17:23

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.

Luckie 31. Dez 2005 17:25

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. ;)

PierreB 31. Dez 2005 17:30

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:

Mit dem Programm beendet Windows innerhalb von Sekundenbruchteilen die Arbeit. Alles wird aus dem Speicher geworfen – und der Rechner abgeschaltet. Allerdings ohne Rücksicht auf das Thema Sicherheit zu nehmen. Sollten einzelne Daten noch nicht gespeichert sein, kümmert das Super Fast Shutdown nicht weiter. Eventuell noch nicht gespeicherte Eingaben oder Korrekturen gehen also verloren. Wer Super Fast Shutdown benutzt, sollte sich über diesen Nachteil im Klaren sein.
Quelle: http://www.schieb.de/tipps/result.php?id=427880_2

Stanlay Hanks 31. Dez 2005 17:31

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:

c113plpbr 31. Dez 2005 17:38

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 hier.

Jedoch bezweifle ich, dass diese Methode gut für einen Computer sein kann ...

ciao, Philipp

Mazel 31. Dez 2005 18:29

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

c113plpbr 31. Dez 2005 18:35

Re: Windows in 5 Sekunden ausschalten, aber wie?
 
Zitat:

Zitat von Mazel
Danke c113plpbr, jedoch habe ich keine Ahnung, wie ich die Komponente verwende bzw. wie ich eine Disassembler baue.

Musst du das denn?

Einfach die ntapi runterladen, in den Delphi-suchpfad einbinden, dann per
Delphi-Quellcode:
uses
  JwaNative;
ins projekt einbinden, und dann irgendwo im quelltext
Delphi-Quellcode:
NtShutdownSystem(ShutdownNoReboot);
schreiben ...

-> gaaanz einfach ...

ciao, Philipp

mh166 31. Dez 2005 18:42

Re: Windows in 5 Sekunden ausschalten, aber wie?
 
Zitat:

Zitat von phXql
Nein, Suspend To Disk ist noch langsamer, weil der gesamte inhalt des RAMs auf die Platte geschrieben wird. Suspend to RAM is das schnellste, aber wenn man dann den PC den saft abdreht, is halt blöd, weil dann die daten verloren sind.

Also das will ich jetzt einfach mal als Quatsch dahinstellen! Ich habs gerade noch mal gestoppt, um meine These auch mit statistischen Werten zu belegen:

: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

Mazel 31. Dez 2005 19:53

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

Mazel 31. Dez 2005 21:15

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:
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.
Gruß
Mazel


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr.
Seite 2 von 3     12 3      

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