O nás     Inzerce     KontaktSpolehlivé informace o IT již od roku 2011
Hledat
Nepřehlédněte: Usnadní vám práci: Pozoruhodné IT produkty pro rok 2024
Správa dokumentů
Digitální transformace
Informační systémy
Hlavní rubriky: Informační systémy, Mobilní technologie, Datová centra, Sítě, IT bezpečnost, Software, Hardware, Zkušenosti a názory, Speciály

Pozoruhodné IT produkty 2024
E-knihy o IT zdarma
Manuál Linux

Jak snadno programovat pro Windows – i automatizovat nudné úkoly

Hned v úvodu bych asi měl zmínit, proč vlastně píšu tento text: Narazil jsem na problém, jak rychle a snadno napsat jednoduchou aplikaci pro Windows. Nic velkého, na co bych chtěl vytahovat kanón typu MS Visual Studio (nejde o peníze, lze použít verzi Express, která je zdarma), prostě jen utilitu, která mi usnadní práci, a jejíž tvorbě nechci věnovat víc, než pár minut. Třeba se někomu budou moje postřehy a nalezená řešení hodit.

Nástroj, který jsem nakonec našel a použil, umožňuje nejen snadno programovat základní aplikace pro Windows, ale také automatizovat některé úkoly v tomto OS. Zvládne totiž i simulovat stisky kláves nebo pohyby myší, manipulovat s okny apod. (A je zdarma i pro komerční použití, sluší se dodat.) Ale měl bych asi začít ne od konce, ale od začátku.

První, co mě napadlo, bylo napsat mou aplikaci v PHP a zkompilovat ji do EXE souboru. To se dá řešit třeba prostřednictvím programu Bamcompile od Bambalam. Běžný soubor v PHP díky tomu spustíte jako exe, jeho výstup se zobrazí na standardním výstupu (v DOS okně). Pokud chcete grafické rozhraní, můžete použít knihovnu WinBinder, díky níž z PHP vytvoříte GUI dle potřeby. Nezní to špatně, součástí kompilátoru z PHP do EXE jsou i nějaké příklady použití, ale, po pravdě, nechtělo se mi učit se funkce WinBinderu. Původně jsem měl představu, že prostě napíšu PHP kód, což stejně dělám docela často, a spustím s výstupem do prohlížeče (což by měl umět placený nástroj ExeOutput, za který se mi ale, po pravdě, kvůli jedné jednoduché utilitě nechtělo platit). Tak jednoduše to ale s Bamcompile a s WinBinderem nejde.

Co chci a co ne

S PHP jsem se tedy rozloučil a přemýšlel, kudy dál. Pokud jde o jazyk, je mi to jedno – může to být C, Pascal, Basic, ve všem jsem už někdy něco bastlil a vzhledem k tomu, že půjde o pár řádků kódu, klidně to zbastlím zase. Co mě ale fakt unavuje, je pronikat do zákoutí knihoven objektů, metod a jejich parametrů, promakané interakce s GUI apod. Mým cílem je napsat něco jako: Vytvoř textové pole, ještě jedno, počkej, až uživatel klikne na OK, vezmi data z polí, načti soubor, něco s tím vším proveď a ulož to.

Takže to není zase tak jednoduché, aby to bylo na dávkový soubor, ale ani tak komplikované, abych řešil MFC a ladil propracovanou event driven aplikaci. I když pro každodenního programátora ve Visual Studiu by to byla určitě také práce na pár minut, já jsem s ním už pár let nepracoval, takže by mi zkoumání, co a jak, zabralo daleko víc času, než samotné psaní.

Jak snadno napsat aplikaci pro Windows

Editor nástroje AutoIT s kódem scriptu.
Editor nástroje AutoIT s kódem scriptu.
Nakonec jsem sáhl po nástroji, který se jmenuje AutoIT. Jak už jsem zmínil výše, je to bezplatný nástroj pro scriptování, který umožňuje snadno programovat jednoduché aplikace pro Windows i automatizovat některé úlohy v tomto OS prostřednictvím simulace stisků kláves nebo pohybů myší apod.

Po stažení a instalaci je k dispozici základní balík s editorem kódu a poměrně rozsáhlou nápovědou včetně příkladů, ale třeba i s compilerem scriptů. Pokud tedy své aplikace chcete šířit dál jako exe soubory, nic vám nebrání.

Jen pro představu, jak se v systému AutoIT programuje, jednoduchý příklad kódu:

#include

#include

GUICreate("Titulek okna", 400, 300)

GUICtrlCreateLabel("Text v okne na pozici 10, 10", 10, 10)

$textinp = GUICtrlCreateInput ( "vstupní textové pole 380x60 na pozici 10, 30", 10, 30, 380, 60, $ES_MULTILINE)

$okbutton = GUICtrlCreateButton("OK", 10, 250, 60)

GUISetState(@SW_SHOW)

While 1

$msg = GUIGetMsg()

Select

Case $msg = $okbutton

MsgBox(0, "Hola", GUICtrlRead($textinp))

Case $msg = $GUI_EVENT_CLOSE

ExitLoop

EndSelect

WEnd

Myslím, že kód je docela samovysvětlující, na počátku je vytvořeno jednoduché okno s několika ovládacími prvky, následuje smyčka, která řeší akce. Pochopitelně reakce na stisk tlačítka OK (okno s titulkem Hola a výpisem textu z textboxu) a není to pravé ořechové, ale je to jen příklad – a v reálu prostě provedete to, co je třeba. Typicky načtete hodnotu z nějakého vstupního pole a něco s ní provedete.

Funkcí je k dispozici řada, nechybí pochopitelně ty pro funkci se soubory, s GUI apod. Pokud váháte, jestli jsou k dispozici ty, které potřebujete, zkuste projít on-line nápovědu – stejně jsem postupoval i já, než jsem se pro nástroj rozhodl.

Jak automatizovat úlohy ve Windows

Už jsem psal výše, že se dají snadno automatizovat různé úkoly ve Windows. V nápovědě je tento příklad s Notepadem, který spustí Notepad, pošle do něj nějaký text a zavře Notepad bez uložení textu. Nic extra užitečného, ale jako příklad to myslím vyhovuje (středník uvozuje komentář):

Run("notepad.exe")

WinWaitActive("Untitled - Notepad")

Send("Text pro Notepad.")

WinClose("Untitled - Notepad")

WinWaitActive("Notepad", "Save")

;WinWaitActive("Notepad", "Do you want to save") ; Pokud aplikace bezi ve Windows XP

Send("!n")

Na závěr

Z jednoduchého editoru, který je součástí balíku, napsanou aplikaci snadno spustíte (klávesová zkratka F5) nebo zkompilujete do exe (F7). K dispozici je také, jak už jsem psal, nápověda s příklady kódu.

Nástroj AutoIT Script je jednoznačně výborný nástroj pro každého, kdo potřebuje občas napsat jednoduchou aplikaci pro Windows a přitom to nedělá každý den, a tak jsou pro něj nástroje jako je Visual Studio a knihovny MFC zbytečně příliš komplikované. Nemluvě o možnostech automatizace opakujících se úloh, které jsou v AutoIT dobře podporované. Jedinou nevýhodou je, že když o tom pak budete psát blog post, zabere vám psaní víc času, než samotné psaní aplikace :).


(13. 11. 2012 | RadekT)


Autorem tohoto textu není redakce těchto webových stránek, ale jeden ze čtenářů/ek: RadekT

Facebook Twitter
Komentáře, názory a rady

Inspirující,
někdy zkusím. Ale strašně málo info v češtině. Asi by stejně posloužil VBScript, JScript s WSH. Umí to OOP, seznamy, atd?...

>>> Číst a vkládat komentáře <<<
©2011-2024 BusinessIT.cz, ISSN 1805-0522 | Názvy použité v textech mohou být ochrannými známkami příslušných vlastníků.
Provozovatel: Bispiral, s.r.o., kontakt: BusinessIT(at)Bispiral.com | Inzerce: Best Online Media, s.r.o., zuzana@online-media.cz
O vydavateli | Pravidla webu BusinessIT.cz a ochrana soukromí | Používáme účetní program Money S3 | pg(797)