Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

AutoHotKey — czyli narzędzie wielkiej improwizacji

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):

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

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.

http://wklej.to/Ira9X

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:

  1. Zainstalować AHK, wkleić skrypty i z menu ‘file’ uruchomić ‘reload script’.
  2. Uruchomić MS Paint lub inny program do bazgrolenia (w przypadku programów z szeroką wstążką kursor może się nie wstrzelić).
  3. Obszar rysowania ustawić mniej więcej 800px szerokości i 200px wysokości
  4. Wybrać w miarę wąski pędzel i dowolny kolor (odróżniający się od tła - doradził mi to pewien stary góral).
  5. 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 

oprogramowanie

Komentarze

0 nowych
2099   8 #1 16.06.2015 12:27

tl:dr

Spagnoletto   6 #2 16.06.2015 12:37

tl;dr :)

Autor edytował komentarz.
flecht   6 #3 16.06.2015 12:37

@2099: > tl:dr
raczej tl;dr :P

Jak sprawnie idzie generowanie skrypcików w AHK? Do tej pory używałem raczej AutoIT i różnie z tym bywało (prawdopodobnie za mało piszę).

Qoo   6 #4 16.06.2015 12:44

@flecht: Automatycznej generacji (nie wiem czy chodzi Ci o nagrywanie makr?) nie ma (albo ja nie znalazłem). Ogólnie język nie jest jakiś porąbany i można dość szybko ogarnąć. Tutoriale i fora są solidne. Nie powiem czy lepszy czy gorszy od AutoIT bo nie używałem.

Niestety laur zwycięstwa może być tylko jeden więc puchar za pierwsze tl;dr (jak tylko opanuję wykonywanie pucharów z masy papierowej i malowanie pozłotką) idzie do 2099

2099   8 #5 16.06.2015 13:26

Dziękuję, ale szczerze nie mogę w zgodzie z sumieniem odebrać nagrody, ponieważ wpis przeczytałem i bardzo mi się podobał. Dzięki za wskazanie tego narzędzia- przyda się nie raz.

aeroflyluby   14 #6 16.06.2015 22:14

A co to za system obiegu dokumentów?

damian879   3 #7 17.06.2015 10:06

Aż przypomniały mi się czasy z konkursem na DB z klikaniem w motylki. Po kilku minutach pisania skryptu byłem na pierwszym miejscu :D

Qoo   6 #8 17.06.2015 10:13

@damian879: No ja z domowych zastosowań mam pod F2 i F3 szybkie komendy do Path of Exile :)

  #9 17.06.2015 17:58

Ale przecież 2099 wpisał z dwukropkiem a nie średnikiem więc nie może być zwycięzcą :P

grajekk   11 #10 17.06.2015 18:53

A czy program jest w stanie klikać w przeglądarce i scrollować :D ?

Qoo   6 #11 17.06.2015 22:30

@grajekk: Jak najbardziej