Přeskočit na hlavní obsah

Kontextové menu v DOSu

Podívejme se do listopadu roku 1993, kdy jsem začal tvořit zajímavý prográmek, který řešil jednu pomocnou záležitost při práci se soubory. V té době jsem pracoval ve Volkov Commanderu. A při klepnutí na soubor, který se dal zpracovat několika způsoby mi právě tato možnost chyběla. Proto jsem se rozhodl napsat cosi, co by tenhle problém vyřešilo. Program měl být podobný tomu, co nabízely Norton Utility pod názvem BE.EXE, tedy Batch Enhancer. A tak jsem začal programovat. První verze vlastně pracovala pouze pomocí klávesnice, do druhé jsem zapojil i myš, což BE.EXE neměl. 

Myš jsem přidal především z lenosti. Když jsem myší dvakrát klikl na daný soubor a menu se otevřelo, už jsem nechtěl ruku z myši sundávat a šmátrat po klávesnici. Ta myš se nastavila na slovo Volba, kterým se MENU2A ohlásil a čekal na vstup. Pak už stačil jen minimální pohyb nahoru. Vybrat volbu a stisknout levé tlačítko. Takhle si představuju user friendly aplikaci.

Teď už budu popisovat jen tu druhou verzi, tedy program pod názvem MENU2A.EXE. Program nemohl fungovat sám o sobě, musel být součástí dávkového souboru (BAT). Uvedu modelový příklad. Jednalo se o například o soubor s příponou ZIP. Co jsem s ním mohl udělat? Bylo ho možné prohlédnout pomocí výpisu na obrazovce, pomocí speciálního prohlížeče nebo rozbalit. A když rozbalit, tak buď to aktuálního adresáře a nebo do speciálního, který právě na rozbalování sloužil. Čili se dalo vybrat ze čtyř úkonů. Pokud jsem tedy ve file manageru kliknul na soubor s příponou ZIP, ten aktivoval soubor BZIP.BAT ve kterém se spouštěl program MENU2A s jedním parametrem na vstupu. Ten parametr obsahoval řetězec čtyř znaků (každá pro jednu volbu), které byly následně použity k aktivaci jednotlivých úkonů. Program pouze čekal na stisk jedné z definovaných kláves nebo na klik myši ve správném řádku. První volba byla dostupná také stiskem klávesy Enter a ESC program ukončilo.

Fígl byl v tom, že program při stisku klávesy ukončil svojí činnost a vracel systémovou proměnnou ERRORLEVEL která odpovídala pořadí stisknuté klávesy ve vstupním řetězci. Podle této hodnoty  dávka (BAT)  předala řízení určenému programu. Výběr bylo možné provést i myší, kdy stačilo kliknout do řádku, kde se volba nacházela. Pokud jsem stiskl pravé tlačítko na myši, fungovalo jako ESC. Když byla stisknuta klávesa mimo seznam, program varovně pípl.

Nyní ještě svoje povídání rozšířím o tvorbu dávkových souborů, takzvaných baťáků. Tam jenom zmíním, že ten rámeček, ve kterém se nachází nabídka, tam má opodstatnění. Jednak to v rámečku lépe vypadá a navíc s ním už MENU2a počítá. Ten program ví, ve kterém řádku se výzva Volba> nachází. Na ten sám řádek nastaví kurzor myši, a už se ví, že ob jeden řádek se nachází poslední nabídka. A když vím toto, podle počtu položek si odpočívám i ty ostatní. Naprosto jednoduché, efektivní, rychlé.

Ten dávkový soubor se v podstatě vytvoří jen jednou a pak už se jen opravuje podle potřeb. Skládá se z několika částí. Návěští start, vlastní nabídka v rámečku, volání MENU2a, rozhodovací příkazy ERRORLEVEL, kterých je přesně tolik, kolik nabídek. Ale v opačném pořadí. No a ke každému rozhodovacímu bloku je sekce, která tuto volbu řeší. Každá sekce je pojmenovaná návěštím E1, E2, E3,... MENU2A provede rozdělení, baťák potom udělá potřebnou akci pro tu kterou větev. Akce se provede, dávka se ukončí a předá řízení file manageru nebo operačnímu systému. Více netřeba.

Program v první verzi obsahoval čtyřicet řádků kódu, když jsem do druhé verze přidal i ovládání myší a nápovědné okno, měl rovné dvě stovky řádků. EXE modul měl necelých 10 KB. Tenhle způsob ovládání mi v DOSu a Commanderu chyběl a tímto svým výtvorem jsem si usnadnil práci. Svým způsobem jsem si vytvořil kontextové menu, se kterým až za dva roky přišel systém Windows 95. Trochu jsem předběhl dobu a protože si stále hraji s DOS programy, tento program rozhodně není mrtvý, ale stále ho používám. A i když jsem vytvořil poměrně dost projektů a utilit, MENU2A byl ve své době nejpoužívanější. K tomu jsem dodělal i dva mini programy s názvem SDIR a GDIR. První program uložil aktuální adresář a druhý ho nastavil zpět. V dávkách a při různých pohybech sem a tam naprosto nezbytná funkce.


Komentáře

Populární příspěvky z tohoto blogu

Najdi, ulož, oprav, generuj

Opět se ponořím do dávné minulosti. Podle údajů v archívu se jednalo o rok 1994. To už je opravdu nějakej pátek. A protože v té době kraloval DOS a snad i Windows 3.11, čas od času jsem používal na nějaké menší obrázky Z-Soft Paint Brush . Pamětníci jistě vědí, o čem hovořím. Na podobném principu následně i Microsoft vytvořil program Malování. Ale já používal tehdy Paint Brush. Neměl jsem k němu výhrady, snad jen, že nepodporoval české znaky. A protože absence Češtiny mi vadila čím dál víc, rozhodl jsem se s tím něco udělat. Při pohledu do adresáře jsem pochopil, že fonty jsou uložené v souborech, které mají příponu FNT a jsou rastrové. To mi samozřejmě nedošlo hned, ale musel jsem chvíli do těchto souborů nahlížet. A pak mě napadlo řešení. Co kdybych si napsal svůj prográmek, který umí obsah tohoto souboru přepsat tak, aby se znaková sada změnila na to, co chci já? A v tom okamžiku mi došlo, že vlastně nejde jen o Paint Brush, ale že bych rád počeštil i jiné programy. A ta...

Jak hacknout Pagemaker?

Opět píšu a důvod bude následující. Zase bych rád něco napsal na blog. O čem to bude tentokrát? Opět půjde o jeden program, který jsem ale nenapsal já. Je to program publikační a jmenuje se Pagemaker 5. Ten, kdo s ním někdy přišel do styku, jistě tuší, o čem tohle povídání bude. Ano, program měl zabudovanou ochranu proti neoprávněnému kopírování. Pokud si zpětně po letech vybavím, bylo možné z disket udělat maximálně tři instalace na tři různé stroje. Pokud jsem chtěl čtvrtý stroj, jedna z již existujících instalací musela být odebrána. Ano, tak to aspoň stálo v manuálu. Tuto informaci jsem bral jako fakt, protože ve firmě se tento software měl dávat pouze na dva stroje. Třetí instalace pořád zbývala. Ale vlastně než celý proces začal, zkusil jsem si první pokusnou instalaci na svůj stroj s tím, že ji později odeberu, pokud by bylo potřeba instalovat ještě někam jinam. Jen zmíním, že Pagemaker 5 se instaloval z disket 3,5" a deinstalace se rovněž prováděla z disket. Pa...