Programy v Delphi

Serial
Nedávno jsem se trošku zabýval komunikací přes sériový port. Prozatimním výsledkem je jednoduchý prográmek, který ukazuje základy práce s tímto zařízením. Jedná se o konzolovou aplikaci, která nejprve pomocí API funkce CreateFile získá k portu přístup, zjistí jeho aktuální nastavení a provede jeho změny v oblasti rychlosti, parity a stopbitu. Pokud se podaří nastavení změnit, program v nekonečné smyčce čte ze sériového portu příchozí data (vždy se zasekne, dokud se nějaká neobjeví) a vypisuje je na obrazovku (interpretuje je jako ASCII kódy). Aplikaci lze ukončit pouze násilně, například stiskem zkratky Ctrl + V.

SimpleKeylogger
Jelikož se mě občas lidé ptají, jak ve Windows zachytávat stisknuté klávesy, ikdyž aplikace-špión se nenachází v popředí, rozhodl jsem se zveřejnit jednoduchý kód, který celý postup ilustruje (abych ho nemusel pořád posílat mailem :-) ). Kód zaregistruje zpětně volanou funkci pomocí SetWindowsHookEx. Operačnímu systému se řekne, že tato funkce má být volána při každém stisku a uvolnění klávesy. Při ukončení programu je opět tato zpětně volaná funkce odstraněna voláním UnhookWindowsHookEx. Jelikož se jedná o celkem nízkoúrovňový způsob a jelikož kód je opravdu jednoduchý, neřeší "maličkosti" typu překlad scan kódu na ASCII či stisk více kláves najednou.

DesktopManager
Tento jednoduchý prográmek jsem vytvořil za účelem jednoduché správy plochy a nabídky Start více uživatelům najednou. Občas si uživatelé stěžují, že se jim na ploše po instalaci nějakého programu (o který oni nestojí) objevil jeho zástupce. Můj program zobrazí, co všechno má každý uživatel na ploše (popř. ve Start menu) a umožňuje jediným klikem mazání a kopírování zástupců z jedné plochy na druhou atp. Je to taková blbůstka, ale třeba se někomu bude hodit. Zdrojáky jsou přiloženy.

DLLImportExportFinder
Tento velmi jednoduchý program vlastní výroby používám k zjišťování importů a exportů různých DLL a EXE souborů. Hodí se to zejména k nalezení některých nedokumentovaných funkcí. Programu prostě zadáte adresář, který on prohledá (i s podadresáři) a zjistí všechny importy a exporty, které odpovídají kritériím.

DriverLoader
Nedávno jsem začal programovat ovladače pro TaskManagera (ty tu samozřejmě zveřejním). Ovladač musí být nějakým způsobem zaveden do jádra, aby se mohl testovat. A DriverLoader je právě program, který to umí. Ale dokáže i instalovat/spouštět/zastavovat služby. Pokud chcete zavést ovladač do paměti, zapište do textových polí jeho jméno a cestu k souboru a stiskněte tlačítka "Load" a "Start". Pro odstranění ovladače z kernelu stiskněte "Stop" popř. "Unload".
Tento program není nijak user-friendly. Šlo mi o to naprogramovat jej co nejrychleji, aby mohl co nejdříve sloužit svému účelu.

Interrupt Counter
Toto je jen taková hříčka. Program zobrazuje, počty generovaných přerušení. Seznam je aktualizován jedenkrát za sekundu, přiččemž v druhém sloupci výpisu je zobrazen celkový počet generovaných přerušení a ve soupci třetím počet generovaných přerušení za poslední sekundu. Pomocí tohoto prográmku můžete zjistit, na jakém přerušení sídlí klávesnice (asi jen u PS/2), kde je asi časovač nebo jak moc vaše PC stránkuje (vypadá to, že PC stránkuje, i když vypnete stránkovací soubor!). UPOZORNĚNÍ: Program využívá mnou napsaného ovladače!!! Proto se může stát, že dojde i k modré smrti. Program byl testován ja vícejádrovém procesoru a meěl by zvládnout stroje až do 32 jader.Avšak stát se může cokoliv. Zdrojáky zatím nejsou přiloženy - v některém z článků je podrobně projdu a okomentuji (třetí nebo čtvrtý díl článků o driverech).

Shutdown
Shutdown je balíček tří jednoduchých programů, které vám mohou pomoci od pomalého vypínání PC. Jedná se o programy FastReboot, FastPowerOff a FastHibernate. Stačí si je dát na plochu a jedním dvojklikem vyvolat požadovanou akci (FastReboot - restartování PC, FastPowerOff - vypnutí PC, FastHibernate - přechod do režimu spánku). Garantuji, že akce se provede do několika málo vteřin. POZOR! O tom, že dojde k nějaké akci bude uvědomeno jádro systému, ne však normální aplikace! Proto si před spuštěním jednoho jakéhokoliv programu z tohoto balíčku vše pečlivě uložte (u FastHibernate to asi nebude třeba).

"Hey ! It compiles ! Ship it !"