Tato kapitola obsahuje několik zajímavých tipů, jak podobné operace uskutečnit. A pro začátek se zaměříme na hlavní panel Windows.



Podobné dokumenty
Instalace programu ProVIS

Vizualizace a evidence výroby a prostojů


Windows - základy. Hlavním vypínačem na základní jednotce. K datům uloženým do výchozí složky.

Možnosti programu. KAPITOLA 5 Možnosti

Základní nastavení systému Windows 7

Modul 2. Druhá sada úkolů:

Hlavní panely, spouštění panelu, tlačítko start

01. HODINA. 1.1 Spuštění programu VB Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

1 Uživatelská dokumentace

NASTAVENÍ PROGRAMU EVIDENCE AUTOBAZARU PRO OS VISTA, WIN7 a WIN8 LOKÁLNÍ INSTALACE (PRO 1 POČÍTAČ)

z aplikace Access 2003

Návod k softwaru. Získání licence. vojtech.vesely@catania.cz

VY_32_INOVACE_INF.08. Microsoft Windows II.

PŘÍRUČKA ZAČÍNÁME IDENTIFIKOVAT VOZIDLO. Obrazovka Identifi kovat vozidlo je první obrazovka, kterou uvidíte při přihlášení k systému Microcat.

ShellTreeView Komponenta, která zobrazuje stromovou strukturu disků a složek.

Aktion.NEXT. Novinky a opravy ve verzi 3.4

Naším cílem je Vaše spokojenost...

Manuál k ovládání aplikace INFOwin.

Kapitola 1: Úvod. 1.1 Obsah balení. 1.2 Požadavky na systém. Česky

VAŠE NOVÁ APLIKACE NISSAN GROUP EPC PŘÍRUČKA ZAČÍNÁME

Zapnutí a vypnutí počítače

František Hudek. červen ročník

Aktuální výběr, nad kterým je kurzor myši

Úvodní příručka. Správa souborů Kliknutím na kartu Soubor můžete otevřít, uložit, vytisknout a spravovat své soubory Wordu.

Prostředí Microstationu a jeho nastavení. Nastavení výkresu

Windows 8.1 (5. třída)

Nielsen Admosphere, a.s. Vážená domácnosti,

Operační systém uživatelská nastavení. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel

František Hudek. březen ročník. Informační a komunikační technologie OS WINDOWS Hlavní panel

Software602 FormApps Server

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš tomas.d@centrum.cz

Spuštění a ukončení databázové aplikace Access

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

IPFW. Aplikace pro ovládání placeného připojení k Internetu. verze 1.1

Newsletter RIBTEC automatické aktualizace Praktická novinka v servisu a podpoře k softwaru RIBTEC od verzí 15.0

WINDOWS 7 ZÁKLADY. Na konci roku 2012 přišly na trh nové Windows 8, které revolučně mění ovládání a jsou orientovány především na dotykové ovládání.

7. Enterprise Search Pokročilé funkce vyhledávání v rámci firemních datových zdrojů

Univerzální rezervační systém. Uživatelská příručka

JRm verze Aplikace. Instalace. Ovládání

Zálohování v MS Windows 10

3 Makra Příklad 4 Access Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.

EvMO postup při instalaci

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

CBR Test dimenzač ní čh parametrů vozovek

KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC

Modul 2. První sada úkolů:

Postupy práce se šablonami IS MPP

Popis rozšířujících funkcí JScriptu

S klávesovými zkratkami ovládnete Windows jako profík Novinky.cz

Formulář pro křížový filtr

INSTALAČNÍ MANUÁL. TME gadget

Individuální nastavení počítače

Hromadný zápis studentů

Zahájit skenování ze skla tiskárny nebo z automatického podavače dokumentů (ADF). Přistupovat k souborům se skeny uloženým v poštovní schránce.

Aktualizace systému WorldShip na jedné pracovní stanici nebo pracovní stanici v rámci pracovní skupiny

OPERAČNÍ SYSTÉM. základní ovládání. Mgr. Jan Veverka Střední odborná škola sociální obor ošetřovatel

ERP informační systém

Mzdy Optimum základy ovládání

Důležité informace o produktu

TouchPad a klávesnice

Dotyková obrázovká v prográmu TRIFID

UŽIJTE SI TELEVIZI. Uživatelský manuál HD Mediaboxu

František Hudek. duben ročník

Manuál QPos Pokladna V1.18.1

Reliance 3 design OBSAH

Microsoft Office. Word vzhled dokumentu

1. POŽADAVKY NA OPERAČNÍ SYSTÉM A POČÍTAČ INSTALACE NASTAVENÍ A SPUŠTĚNÍ APLIKACE OVLÁDÁNÍ A NASTAVENÍ ZVLÁŠTNÍCH FUNKCÍ...

Operační systém MS Windows XP Professional

Konfigurační software DTConfig

NÁVOD NA INSTALACI KARTY PCTV DELUXE

FIREMNÍ CERTIFIKÁT V APLIKACI PŘÍMÝ KANÁL NÁVOD PRO KLIENTY

František Hudek. červen ročník

Windows 10 (5. třída)

GEOM LITE - MANUÁL hlavní obrazovka

Konvertibilní Tablet STRUČNÁ PŘÍRUČKA 8085 LKB001X CJB1FH002ASA

Nápověda pro ovládání automaticky čtené učebnice

CZ.1.07/1.5.00/

Uživatelská příručka.!instalace!průvodce.!dialogová okna!program zevnitř

si.shimano.com Uživatelský návod

Polohovací zařízení a klávesnice Uživatelská příručka

Motorola Phone Tools. Začínáme

Tiskový manažer Printman (Tiskový manažer verze 1.58 a novější)

INSTALAČNÍ POSTUP PRO APLIKACI ELIŠKA 4

[RDM] STRUČNÁ UŽIVATELSKÁ PŘÍRUČKA. CENTRÁLNÍ REGISTR PODPOR MALÉHO ROZSAHU - de minimis

Užijte si televizi Horizon od UPC

OmniTouch 8400 Instant Communications Suite. Aplikace My Instant Communicator Desktop. Aplikace My Instant Communicator pro počítač.

Část 1 - Začínáme. Instalace

Manuál QPOS Pokladna V 2.0

Bc. Martin Majer, AiP Beroun s.r.o.

Začínáme pracovat s tabulkovým procesorem MS Excel

Váš první webinář aneb jak na to?

3 Makra Příklad 4 Access Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.

Migrace na aplikaci Outlook 2010

Testování operačního systému Windows Phone 8

h Počítač h Baterie h Napájecí šňůra h Knihy:

1. Úvod. 2. CryptoPlus jak začít. 2.1 HW a SW předpoklady. 2.2 Licenční ujednání a omezení. 2.3 Jazyková podpora. Požadavky na HW.

TERMÍNY ZKOUŠEK VYPISOVÁNÍ (verze 2)

Manuál k programu KaraokeEditor

Návod k použití webového portálu služby viphone business

Transkript:

Hrátky s operačním systémem V této kapitole si ukážeme některé postupy, s jejichž pomocí je možné měnit určitá nastavení operačního systému, manipulovat s objekty pracovní plochy apod. Při psaní některých programů se můžete dostat do situace, kdy budete chtít změnit některá uživatelská nastavení Windows. Tím myslím například změnu tapety, nastavení rychlosti klávesnice, přepnutí klávesnice apod. Delphi Tato kapitola obsahuje několik zajímavých tipů, jak podobné operace uskutečnit. A pro začátek se zaměříme na hlavní panel Windows. Hlavní panel Hlavní panel je součást Windows, která je důvěrně známá všem uživatelům tohoto operačního systému. Bývá umístěn u některého z okrajů obrazovky a obsahuje kromě velice užitečného tlačítka Start řadu tlačítek určených k přepínání jednotlivých spuštěných aplikací. Ukrytí hlavního panelu V určitých situacích ovšem může hlavní panel na obrazovce překážet a bylo by užitečné umět jej ukrýt. V případě, že byste se i vy do podobné situace dostali, můžete použít následující postup, který využívá API funkci FindWindow. Tato funkce hledá v systému okno se stejným názvem třídy nebo okna, jaké je zadáno v jejích parametrech. Tyto parametry jsou celkem dva: lpclassname Jméno třídy, která odpovídá hledanému oknu. Pokud má tento parametr hodnotu nil, vyhledává se okno podle jeho názvu. lpwindowname Jméno okna, které se má vyhledat. Často jméno okna odpovídá textu v záhlaví, ale není to pravidlo a nelze na to spoléhat. Funkce vrací handle hledaného okna. Pokud okno nebylo nalezeno, vrací nulu. Když si ještě prozradíme, že jméno třídy hlavního panelu je Shell_TrayWnd, můžeme napsat kód, který jej skryje: procedure TForm1.Button1Click(Sender: TObject); var Wnd: THandle; Wnd:= FindWindow('Shell_TrayWnd', nil); //nalezení hlavního panelu if Wnd <> 0 then //pokud bylo okno nalezeno skrýt jej ShowWindow(Wnd, SW_HIDE); 1

Ke skrytí okna je použita API funkce ShowWindow, která zobrazuje nebo naopak skrývá zadané okno. Její parametry mají následující význam: hwnd Handle okna, které se má skrýt nebo zobrazit. ncmdshow Parametr určuje, co se má s oknem přesně udělat. Následující tabulka přehledně uvádí všechny hodnoty, které mohou být dosazeny za tento parametr. Hodnota SW_HIDE SW_MAXIMIZE SW_MINIMIZE SW_RESTORE Význam Skryje okno. Maximalizuje zadané okno. Minimalizuje okno a aktivuje další okno v pořadí. Aktivuje a zobrazí zadané okno. Pokud je okno minimalizované nebo maximalizované, obnoví jeho původní velikost. SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL Aktivuje okno a zobrazí ho v jeho aktuální velikosti a pozici. Zobrazí okno ve velikosti a pozici, kterou mělo při vytvoření. Aktivuje okno a zobrazí je maximalizované. Aktivuje okno a zobrazí je minimalizované. Zobrazí okno v minimalizované podobě, ale nezaměří je. To znamená, že aktivní okno zůstane i nadále zaměřené. Zobrazí okno v aktuální velikosti a pozici, ale nezaměří je. Zobrazí okno v poslední nastavené velikosti, ale nezaměří ho. Aktivuje a zobrazí okno. Pokud je okno minimalizované nebo maximalizované, funkce obnoví jeho původní velikost. Skrytí části hlavního panelu Pomocí metody ShowWindow však lze ukrýt jenom část hlavního panelu, například jenom tlačítka aplikací, nebo tlačítko Start nebo systémové ikony v pravém rohu hlavního panelu. Je to možné proto, že všechny tyto části jsou samostatnými dceřinými okny hlavního panelu. Proto stačí zjistit jejich handle a zavolat pro ně funkci ShowWindow s příslušným parametrem. Ovšem na vyhledání dceřiných oken je funkce FindWindow krátká a budeme muset použít funkci FindWindowEx.Tato funkce opět vrací handle nalezeného okna, ale tentokrát bude nutné zadat hned čtyři parametry: Parent Handle okna, jehož dceřinná okna se mají prohledávat. Child Handle dceřiného okna, od kterého se má začít s hledáním. Pokud je tento parametr nula, prohledávání začne u prvního dceřiného okna. 2

ClassName Jméno třídy hledaného okna. WindowName Jméno hledaného okna. Mají-li se například skrýt ikony v pravé části hlavního panelu, musí se vyhledat okno s názvem třídy TrayNotifyWnd: procedure TForm1.ButtonClick(Sender: TObject); var Wnd: THandle; Wnd:= FindWindow('Shell_TrayWnd', nil); Wnd:= FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil); Delphi if Wnd <> 0 then ShowWindow(Wnd, SW_HIDE); O tom, že lze opakovaným voláním prohledávat okna i na další úrovni, nejlépe svědčí kód, který ukryje systémové hodiny na hlavním panelu. Připomeňme jen, že třída tohoto okna se jmenuje TrayClockWClass : procedure TForm1.ButtonClick(Sender: TObject); var Wnd: THandle; Wnd:= FindWindow('Shell_TrayWnd', nil); Wnd:= FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil); Wnd:= FindWindowEx(Wnd, HWND(0), 'TrayClockWClass', nil); if Wnd <> 0 then ShowWindow(Wnd, SW_HIDE); Všechna okna, která byla skryta tímto způsobem, je možné znovu zobrazit volání funkce ShowWindow s parametrem SW_SHOW. Pracovní plocha Protože budeme pracovat s plochou, měli bychom si ji nastavit tak, aby se nám co nevíce líbila. A proto si jako první ukážeme, jak změnit nastavení tapety. Změna pozadí pracovní plochy Natavení tapety na pracovní ploše lze provést pomocí API funkce SystemParametrsInfo. Tato funkce slouží k nastavení nebo zjištění stavu mnoha systémových nastavení. Co bude 3

přesně dělat, závisí na hodnotě jejího prvního parametru. V našem případě bude mít tento parametr hodnotu SPI_SETDESKWALLPAPER, další dva parametry mají v tomto konkrétním případě hodnotu 0, jméno obrázku, který se má použít jako tapeta, a poslední parametr bude opět nula. Zde je kód, který při stisku tlačítka umožní vybrat obrázek pomocí komponenty OpenPicture- Dialog1 a nastavit ho na pozadí pracovní plochy: procedure TForm1.ButtonClick(Sender: TObject); if OpenPictureDialog1.Execute then SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(OpenPictureDialog1.FileName), 0); Skrytí ikon na pracovní ploše Nová tapeta je nastavená a na pracovní ploše jí to moc sluší, ovšem dokonalý estetický zážitek kazí ikony rozmístěné na pracovní ploše. Proto si nyní ukážeme, jak je ukrýt, aby nepřekážely. Kdo tuší, že použijeme stejný postup jako v případě ukrývání hlavního panelu, tuší správně. Ikony na pracovní ploše jsou zobrazeny v okně, jehož třída se jmenuje ShellDll_DefView, a které je dceřiným oknem třídy Progman: procedure TForm1.Click(Sender: TObject); var Wnd: THandle; Wnd:= FindWindow('Progman', nil); Wnd:= FindWindowEx(Wnd, HWND(0), 'ShellDll_DefView', nil); if Wnd <> 0 then ShowWindow(Wnd, SW_HIDE); Zjištění rozměrů pracovní plochy Způsobů, jak zjistit nastavené rozlišení pracovní plochy, je hned několik. Ale ten nejjednodušší, a podle mého názoru nejelegantnější, je použitím globální proměnné Screen. Tato proměnná je typu TScreen, vytváří se automaticky a je přístupná všem modulům v aplikaci. Třída TScreen obsahuje celou řadu zajímavých informací o obrazovce. Mezi jinými zde naleznete proměnné Width a Height, jejichž hodnoty odpovídají nastavené šířce a výšce pracovní plochy. Pokud tedy potřebujete vytvořit formulář tak, aby byl za každé okolnosti roztažený přes celou obrazovku, použijte následující kód: 4

procedure TForm1.FormCreate(Sender: TObject); Width:= Screen.Width; Height:=Screen.Height; Left:=0; Top:=0; FormStyle:=fsStayOnTop; //nastavení rozmìrù a polohy //formuláøe //nastavení stylu formuláøe Delphi Vlastnosti Width a Height třídy TScreen jsou pouze pro čtení, a proto je nelze použít ke změně rozlišení. Zachycení změny rozlišení V případě, že by měla velikost formuláře vždy kopírovat velikost pracovní plochy, je nutné počítat s tím, že se může rozlišení změnit i během činnosti programu. V takovém případě by se o tom jistě měl náš formulář dozvědět. Řešení tohoto problému spočívá ve vytvoření obsluhy zprávy WM_DISPLAYCHANGE, kterou operační systém posílá oknům, pokud se změní rozlišení. Do definice formuláře je tedy nutné přidat následující metodu: public procedure WMDisplayChange(var Msg : TWMDisplayChange); message WM_DISPLAYCHANG; V těle této funkce je opět nutné změnit velikost a polohu formuláře podle nového rozlišení. Také se nesmí zapomenout na volání funkce předka: procedure TForm1.WMDisplayChange(var Msg: TWMDisplayChange); inherited; Width:= Screen.Width; Height:=Screen.Height; Left:=0; Top:=0; 5

Globální proměnná Screen Třída TScreen, která nám tolik pomohla při zjišťování rozlišení, obsahuje ještě mnoho dalších vlastností, které se týkají obrazovky, ale i věcí, které byste možná na první pohled nečekali. Pomocí proměnné Screen můžete zjistit, kolik je na obrazovce formulářů, kolik je v systému instalovaných fontů apod. Následující tabulka ukazuje přehled nejdůležitějších vlastností třídy TScreen. Vlastnost Význam ActiveControl ActiveCustomForm ActiveForm Cursor Cursors CustomFormCount CustomForms DefaultKbLayout DesktopHeight DesktopLeft DesktopRect DesktopTop DesktopWidth Fonts FormCount Forms Height HintFont IconFont MenuFont MonitorCount Monitors Width Obsahuje referenci na prvek, který je v danou chvíli aktivní. Obsahuje referenci na potomka třídy TCustomForm, který je aktivní. Obsahuje referenci na aktivní formulář. Kurzor myši. Pole dostupných kurzorů, které může aplikace používat. Počet formulářů a editorů vlastností zobrazených na obrazovce. Seznam referencí na zobrazené formuláře. Obsahuje handle na rozložení klávesnice, které bylo aktivní v okamžiku, kdy byla aplikace spuštěna. Výška virtuální pracovní plochy. S virtuálními pracovními plochami se pracuje ve vícemonitorových systémech. Souřadnice levého okraje virtuální pracovní plochy. Oblast ohraničující virtuální pracovní plochu. Horní okraj virtuální pracovní plochy. Šířka virtuální pracovní plochy. Seznam jmen fontů instalovaných v systému. Počet formulářů zobrazených na obrazovce. Seznam referencí na formuláře zobrazené na obrazovce. Výška obrazovky. Font používaný pro bublinovou nápovědu. Font používaný pro popis ikon. Font používaný v nabídkách. Počet použitých monitorů. Seznam použitých monitorů. Šířka obrazovky. 6

Rozvírací nabídka s fonty V následujícím příkladu si ukážeme další praktické použití proměnné Screen. V tomto případě nám poslouží jako zdroj informací o jménech nainstalovaných fontů, které umístíme do rozevírací nabídky. Vytvoření seznamu je velmi jednoduché a při vytváření formuláře, na kterém je nabídka umístěna, stačí provést následující kód: procedure TForm1.FormCreate(Sender: TObject); with ComboBox1 do Items:=Screen.Fonts; Style:=csDropDownList; ItemIndex := 0; Delphi Aby byl příklad o něco zajímavější, upravíme nyní nabídku tak, aby jednotlivé názvy fontů v seznamu byly napsány příslušným fontem, tak jak to bývá zvykem u některých textových editorů. Nejprve je nutné nastavit vlastnost Style u rozevírací nabídky na hodnotu csownerdrawfixed: procedure TForm1.FormCreate(Sender: TObject); with ComboBox1 do Style:=csOwnerDrawFixed; Tím jsme si zajistili, že při každém překreslení položky seznamu bude vyvolána událost OnDraw třídy TComboBox. V této metodě můžeme změnit použitý font a vykreslit jméno fontu na určené místo: procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var combo:tcombobox; oldpcolor, oldbcolor:tcolor; oldfont: TFont; 7

combo:=(control as TComboBox); //pøetypovat ovládací prvek na ComboBox if combo = nil then exit; oldfont:=combo.font; //ulozit nastavení plátna oldbcolor:= combo.canvas.brush.color; oldpcolor:= combo.canvas.pen.color; combo.canvas.pen.color:=clwhite; //nastavit barvu pera if odselected in State then //nastavit barvu //pozadí polozky combo.canvas.brush.color:=clactivecaption else combo.canvas.brush.color:=clwhite; combo.canvas.rectangle(rect); //vykreslit pozadí polozky combo.canvas.font.name:= combo.items[index]; //nastavit font podle jména //vykreslit polozku combo.canvas.textout( Rect.Left+5, Rect.Top, combo.items[index]); combo.canvas.brush.color:= oldbcolor; //obnovit pùvodní nastavení combo.canvas.pen.color:= oldpcolor; combo.font:=oldfont; V případě nějakých nejasností porovnejte uvedený kód s kódem u vytváření uživatelem překreslovaných nabídek v páté kapitole. Vypnutí a restart počítače Programátoři programující aplikace, které provádějí časově náročné operace, nebo instalační programy apod. jistě využijí funkci, která dokáže vypnout nebo restartovat počítač, případně odhlásit uživatele. Všech těchto akcí lze dosáhnout pomocí jediné API funkce, která se jmenuje ExitWindowsEx. Chování této funkce se mění podle zadaných parametrů. Jsou dva. Na činnost funkce má však vliv jen první z nich: uflags Parametr obsahuje příznak nebo kombinaci příznaků specifikujících, jakým způsobem mají být Windows ukončeny. Následující tabulka udává přehled možných hodnot: 8

Hodnota EWX_LOGOFF EWX_POWEROFF EWX_REBOOT Význam Ukončí všechny běžící procesy a odhlásí aktuálního uživatele. Ukončí Windows a vypne počítač. Funkce vypne systém a restartuje Windows (nikoli počítač). Delphi EWX_SHUTDOWN Vypne systém a připraví jej tak, aby bylo možné počítač bezpečně vypnout. To znamená, že veškeré informace byly uloženy na disk a všechny běžící procesy byly zastaveny. V kombinaci s předchozími hodnotami se mohou v parametru objevit ještě tyto příznaky: Hodnota EWX_FORCE EWX_FORCEIFHUNG Význam Funkce vypne běžící procesy, aniž by je o tom nějak informovala a dala jim možnost operaci přerušit. Tento postup může ale způsobit ztrátu dat, a proto byste jej měli používat pouze ve skutečně opodstatněných případech. Tento příznak zajistí, že jsou násilím ukončeny procesy, které nereagují na požadavek na ukončení. Pokud je současně nastaven příznak EWX_FORCE, je tento příznak ignorován (příznak funguje pouze ve Windows 2000 a vyšších). dwreserved Druhý parametr funkce je ignorován. Následující kód způsobí vypnutí počítače s tím, že všechny procesy dostanou příležitost uložit všechna data a nereagující procesy budou ukončeny násilím: procedure TForm1.Button2Click(Sender: TObject); if MessageDlg('Opravdu chcete vypnout poèítaè?', mtconfirmation, [mbyes, mbno], 0) = mryes then ExitWindowsEx(EWX_POWEROFF or EWX_FORCEIFHUNG, 0); Funkce ExitWindowsEx bude pracovat pochopitelně jen tehdy, pokud počítač, na kterém program běží, umožňuje softwarové vypínání. V programech používajících Windows NT nebo Windows 2000 je navíc možné používat funkci LockWorkStation, která nemá žádné parametry a zamkne pracovní stanici. 9

Automatické spuštění programu Následující příklad navazuje na ten předchozí, protože když nějaká aplikace potřebuje během své činnosti restart počítače, bylo by dobré, aby se po restartu sama spustila a mohla pokračovat v započaté práci. Tuto funkci, známou z instalačních programů, je možné celkem snadno naprogramovat s využitím registrů Windows. Autoři Windows totiž s podobnou možností počítali a přidali do systémového registru klíč, do něhož je možné zapsat jména programů, které se mají spustit po startu Windows. Tento klíč se nachází v části HKEY_CURRENT_USER a má název: SOFT- WARE\Microsoft\Windows\CurrentVersion\Run. Do něj je možné zapisovat některým způsobem popsaným v kapitole šest. Jestliže se program nemá spouštět vždy, ale pouze při příštím startu, je výhodnější použít klíč registru s názvem SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce. Po startu Windows jsou totiž spuštěny všechny programy zapsané v tomto klíči, a potom je obsah klíče automaticky vymazán, takže se nemusíte o nic starat. Následující kód ukazuje, jak může program restartovat počítač a po novém naběhnutí systému pokračovat ve své práci: procedure TForm1.ButtonClick(Sender: TObject); var Reg: TRegistry; if MessageDlg('Opravdu chcete vypnout poèítaè?', mtconfirmation, [mbyes, mbno], 0) = mryes then Reg := TRegistry.Create; try Reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey( '\Software\Microsoft\Windows\CurrentVersion\RunOnce', True) then Reg.WriteString('MyApp',' ' + Application.ExeName + ' '); Reg.CloseKey; finally Reg.Free; ExitWindowsEx(EWX_POWEROFF, 0); 10

Aplikace uvedené v tomto klíči se spustí automaticky při každém startu Windows. 11