AutoHotKey — czyli narzędzie wielkiej improwizacji
16.06.2015 13:33
Jak wynika z tytułu wpis będzie traktował o programie AutoHotKey, który służy mi wiernie w pracy od kilku lat, tak w codziennych czynnościach schematycznych, jak i do ratowania mnie w przypadkach zagrożenia żmudną pracą wymagającą wklepywania lub wyklikiwania setki razy tych samych danych w różnych nieprzyjaznych użytkownikowi programach.
Aby przybliżyć czytelnikom obraz typowego problemu z jakim najlepiej radzi sobie AHK opiszę jeden z gorszych przypadków, z jakimi się zetknąłem w pracy.
Dzień zapowiadał się całkiem nudno. Mimo dużej liczby zgłoszeń od pracowników żaden problem nie przekraczał stopniem komplikacji zamiany "z" z "y". Czułem przez czterodniowe skarpetki, że ta sielanka jest zbyt piękna, by potrwać dłużej. Kolejne zgłoszenie - zatytułowane "Zmiana dekretacji pism" - nie wyglądało też na szczególne wyzwanie. Dopiero treść zgłoszenia spowodowała pojawienie się na mojej głowie pierwszych siwych włosów. "Pracownik A oddelegowany do wydziału X przez okres nieobecności pracownika B zastępował go w pełnym zakresie czynności. W związku z tym, iż pism na bieżąco przychodzi do wydziału X bardzo duża ilość, po powrocie do pracy pracownika B należy na niego przedekretować zaległe pisma pracownika A, celem umożliwienia ich dalszej realizacji." Tknięty złym przeczuciem przefiltrowałem pisma pracownika A, by określić rozmiar czekającego mnie przedsięwzięcia. Pisma w liczbie ok. 300... Wiem, że w wydziale X taka liczba to norma, bo realizacja pism idzie tam taśmowo i tyle samo ich przychodzi, ile wychodzi, od lat. Problem tkwił gdzie indziej. W systemie obiegu dokumentów - będącym zamkniętym oprogramowaniem - tak ze strony pracownika, jak i administratora przedekretowanie tych pism oznaczało konieczność wybrania z menu opcji, wyklikania jeszcze innych opcji na dwóch kolejno pojawiających się podformularzach, wyszukania pracownika na liście i wreszcie zatwierdzenia. W tym miejscu mała dygresja, bo pewnie wielu z Was podniesie głosy, że to powinien być psi obowiązek pracownika, który za te pisma odpowiadał. Przyznam, że też tak myślałem, ale póki nie stwierdziłem czy da się to jakoś ułatwić nie wytaczałem jeszcze armaty. Perspektywa wyklikania tego wszystkiego razy 300 była bardzo niekomfortowa. Same dokumenty można łatwo, z poziomu administratora, edytować za pomocą własnych skryptów. Wiem jednak z doświadczenia, że sama opcja dekretacji ma zaszyte o wiele więcej funkcji niż zmiana nazwiska z A na B. Wiedziałem, że stosowanie chałupniczych rozwiązań po pewnym czasie może, ale nie musi zaowocować jakąś przykrą niespodzianką. Ryzykować nie miałem zamiaru. Najrozsądniej było więc wykonać natywną dekretację jak Pan Bóg (i twórcy oprogramowania) przykazali. W tym miejscu - w ciemnych okularach i w koszulce z napisem "who's the boss?" - na plan wchodzi AutoHotKey. Potem już tylko układanka poleceń TAB, ENTER itp. i mogłem się przyglądać jak pisma się ładnie dekretują. Byłbym kłamcą, gdybym powiedział, że obeszło się bez mojej ingerencji. Każdy system może - jak wiadomo - zaliczyć tzw. lag i skrypt, który wyprzedziłby pojawiające się formularze mógłby sprawić dużo kłopotów. Moja praca ograniczyła się więc do wywołania skryptu razy 300 i nadzorowania go na bieżąco. Łącznie zajęło to jakieś 20 minut - ok. 4 sekund na dokument. Problem z głowy.
Zazwyczaj AHK służy mi do podmieniania tekstu w sytuacjach takich jak udzielenie standardowej - lecz wymagającej rozpisywania się - odpowiedzi na standardowe pytanie użytkownika. Inne przypadki to drobiazgi typu zamiana "zw" na "zaraz wracam". Doskonale nadaje się do szybkiego wysyłania wiadomości e‑mail. W przypadku starego laptopa z uwalonym klawiszem PrtScr można było ten klawisz wywołać kombinacją innych klawiszy (całkiem znośne rozwiązanie). Ogólnie mówiąc wg. mnie ten program to pogromca źle zaplanowanych, nieergonomicznych interfejsów użytkownika.
Sporo pytań dotyczących AHK krąży wokół wykorzystania go jako klikacza w rozmaitych aplikacjach, a to, żeby coś kupić w necie, innym razem do nabijania statystyk (power gaming) lub karmienia kurek o poranku.
Przyznam, że z mało w sumie przydatnych zastosowań AHK zaciekawiła mnie wizja skryptu rysującego w programie graficznym - w opisie funkcji MouseClickDrag jest nawet przykład takiego zastosowania rysujący domek w MS Paint (u mnie nie mieści się w obszarze rysowania – pewnie przystosowany do starszych wersji Painta):
[code=]Run, mspaint.exe WinWaitActive, ahk_class MSPaintApp,, 2 if ErrorLevel return MouseClickDrag, L, 150, 250, 150, 150 MouseClickDrag, L, 150, 150, 200, 100 MouseClickDrag, L, 200, 100, 250, 150 MouseClickDrag, L, 250, 150, 150, 150 MouseClickDrag, L, 150, 150, 250, 250 MouseClickDrag, L, 250, 250, 250, 150 MouseClickDrag, L, 250, 150, 150, 250 MouseClickDrag, L, 150, 250, 250, 250[/code]
Oczywiście, żeby narysować coś konkretnego i cieszącego oko, należałoby to opłacić niesamowitym nakładem pracy. W bardziej skomplikowanym obrazie jeden piksel zajmowałby linijkę kodu. Dodając do tego komendy pozwalające zmienić kolor - masakra. Chciałem jednak tego spróbować na czymś prostym np. "Bitwa pod Grunwaldem" Matejki (żart oczywiście). Postanowiłem stworzyć jakiś bzdurny napis bez krzywizn i zaokrągleń (lenistwo pierwszej wody). Przy tworzeniu tych skryptów wspomagałem się excelem, funkcją złączania tekstu i dość dużą możliwością przekształcania gotowych już elementów. Poza tym sortowanie kodu po określonych współrzędnych lub ich wymieszanie daje całkiem fajne efekty końcowe, podobnie jak używanie różnych kombinacji narzędzi do rysowania (np. rysowanie grubym pędzlem jednym kolorem i powtórzenie cienkim z innym kolorem). Zabawa pracochłonna, jednak po stworzeniu skryptu daje możliwość powtarzalnego tworzenia i eksperymentowania na tym samym rysunku.
Zawiera dwa skrypty uruchamiane odpowiednio: WIN+S (mniej rozbudowany napis) i WIN+X (bardziej rozbudowany)
Z bardziej zakręconych zastosowań takich skryptów byłyby np. życzenia urodzinowe rysujące się na komputerze "ofiary" :)
Teraz miejsce na moje złośliwe zagranie. Taki chłyt martetindody. Ale jako rasowy fanboj nie mogę sobie darować takiej niecnej próby zachęcenia chociaż kilku osób do zainstalowania tego programu i... nie zamieszczę efektów działania tych skryptów.
Zalecane:
- Zainstalować AHK, wkleić skrypty i z menu ‘file’ uruchomić ‘reload script’.
- Uruchomić MS Paint lub inny program do bazgrolenia (w przypadku programów z szeroką wstążką kursor może się nie wstrzelić).
- Obszar rysowania ustawić mniej więcej 800px szerokości i 200px wysokości
- Wybrać w miarę wąski pędzel i dowolny kolor (odróżniający się od tła - doradził mi to pewien stary góral).
- Uruchomić skrypt skrótem.
I wreszcie koniec tej mojej laurki pod adresem AHK :)
Pozdrawiam
PS. Pierwszy kto użyje w komentarzu tl;dr będzie... pierwszy