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.
