Domů

Balík srandakódů (3)

Minule jsme si hráli s okny a jinými ovládacími prvky, které najdete standartně ve Windows. Dnes bych seriál uzavřel prací s mechanikami počítače a nakonec jeho vypnutím.


Vysunutí a zasunutí CD mechaniky

Zdánlivě základní věc, jako je přítomnost CD, případně DVD mechaniky, může být v tomto případě docela na obtíž. Pokud se navíc v zasouvané a vysouvané CDromce navíc nachází nějaké médium, dokáže to práci s počítačem docela znepříjemnit nebo dokonce znemožnit. Následující příklad bohužel funguje jen s mechanikou, která je právě nastavena jako mechanika pro přehrávání AudioCD.


MCISendString('Set cdaudio door open', nil, 0, hInstance); // Otevření

MCISendString('Set cdaudio door closed wait', nil, 0, hInstance); // Zavření

Vypnutí nebo restart počítače

No. Nemusím snad popisovat, jak nepříjemné je, když počítač spadne a vy máte právě rozdělanou nějakou pro vás důležitou práci. A co teprve když se počítač v klidu sám od sebe vypne, jako by se nechumelilo. :-)
Následující kód ale s přehledem funguje pouze pod Windows 9x. Pod Windows s jádrem NT se počítač jen odhlásí (což v některých případech stačí).


ExitWindowsEx(EWX_FORCE, 0); // Tímto zajistíme, že se počítač nebude uživatele ptát, nebo na něj snad čekat
ExitWindowsEx(EWX_SHUTDOWN, 0);

Výše uvedený kód vypne počítač. Pokud jej ale chceme jen restartovat, stačí zaměnit EWX_SHUTDOWN za EWX_REBOOT. Pro odhlášení lze zase použít konstantu EWX_LOGOFF.

Vypnutí počítače se systémy Win2k a WinXP

Avšak i pod Windows XP atd. se dá počítač vypnout. Existují dva způsoby. V prvním si může zkusit váš program získat jakási přístupová práva k vypnutí počítače. Tento způsob mi nefunguje (a netuším kde mám chybu), takže rovnou k možnosti druhé. Ta umožňuje vypnout počítač pomocí jednoho řádku kódu bez zbytečného získávání privilegií. Stačí spustit program Shutdown.exe, který se nachází v systémovém adresáři.


WinExec(PChar('Shutdown.exe -s -t 0 -f'), SW_HIDE);

Parametr -s znamená, že chceme počítač vypnout (shutdown). Pro restart jej stačí zaměnit za -r. Volba -t 0 znamená, že nechceme čekat a volba -f má stejný význam jako EWX_FORCE z minulého odstavce.
Po spuštění programu shutdown.exe by se normálně zobrazilo černé okno, čemuž zamezíme hned při startu programu - SW_HIDE.


Související články:
Balík srandakódů (2)
Balík srandakódů (1)