Zautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 5

Witajcie ponownie

Długa przerwa od ostatniego odcinka spowodowana była najnormalniejszym w świecie urlopem który spędziłem nad polskim morzem. Bez przeciągania wstępu możemy wrócić do zabawy ze skryptami i próbami ułatwienia sobie życia z windowsem dzięki AHK.

reklama

Zajrzyj do poprzedniego: Epizod 4

W pierwszym odcinku (wstępie) pokazałem hotstringi. Nie rozwodziłem się nad nimi zbytnio z tego względu że, osobiście ich nie używam. Jednak mimo innych planów stwierdziłem że nie mogę tego tematu zostawić bez kilku dodatków.

Hotstringi są prostym i fajnym wynalazkiem. Ich zachowanie różni się tym od Hotkeyów że działają w trakcie pisania (Eureka), nie musisz zastanawiać się nad wciskaniem dodatkowych klawiszy (jak shift), po prostu piszesz. Z tego względu najwięcej przykładów zastosowania jakie spotkałem to autokorekta, wstawianie podpisów i komentarzy:

::sie::się
::rze::że
::rozni::różni
::ciekwae::ciekawe
::bh::BriHecato

"IntelliSense" czyli takie ułatwienie kodowania:

::sen:: Send,
::sle:: Sleep,
::sle1:: Sleep, 10
::cli:: Click,
::mcl:: MouseClick,
::mom:: MouseMove,

Parametry

Na tym nie kończą się możliwości ani opcje. Ponieważ między pierwsze dwa dwukropki możemy wstawić parametry, pierwszym jest gwiazdka

:*:hotstring:: <pełny tekst>

powoduje to tylko tyle że hotstring "zaskoczy" zaraz jak go wpiszemy, ponieważ-gdyż domyślne działanie tej funkcji "zaskakuje" gdy po tekście hotstringa wpiszemy spacje lub enter (lub inny "ending character" czego nie rozwijam), więc można by stwierdzić że nie jest to tak super w pełni automatyczne.

Mogą występować sytuacje gdy nie chcemy wpisywać tej spacji - np. mamy taką parę hotstringów używanych we formularzu logowania:

:*:b@:: bri@mojapoczta.pl
:*:has:: Moj3h4slo_Dop0czty

Domyślnie hotstringi są nieczułe na wielkość znaków jakie aktywują hotstring, jednak dodanie parametru "c" pozwala na uzyskiwanie różnych efektów:

:c:btw:: by the way
:c:BTW:: BY_THE_WAY

Gdybyśmy mieli hotstringi bez parametru - tzn "::btw::" - "bajdełej" i "::BTW::" - "biuro techniczno wysyłkowe" - to wpisanie dużego BTW przyniosło by efekt w postaci "BAJDEŁEJ" (nie zostałby rozpoznany drugi hotstring). 

Warto jeszcze wspomnieć o parametrze "b0" (be i zero), powoduje on że nie jest kasowany (zastępowany) tekst hotstringa, a pełny tekst jest dodawany. Najprościej jest to wyjaśnione przykładem z pomocy AHK - zamykanie tagów (czy nawiasów):

:*b0:`<div`>::</div>
:*b0:`<a:: href="" target="" alt=""></a>
:*b0:{::{}}

W powyższych przykładach pierwszy zamknie tag pojemnika <div>, drugi uzupełni cały tag łącza <a> o niezbędne elementy do wypełnienia, trzeci po prostu wstawi zamykającą klamrę. Bardzo przydatne (o ile wasz edytor kodu już tego nie ma w sobie, a i tak wtedy można to sobie rozbudować w taki sposób jaki nam najbardziej odpowiada).

Wypada mi w tym miejscu wyjaśnić po co akcenty w treści hotstringa i potrójne klamry w pełnym tekście. Nie zaczynamy zdania od "a więc", a więc zarówno nawias "trójkątny" jak i klamra są znakami o specjalnym znaczeniu w AHK i aby ich użyć w ich normalnej formie (czyli we formie nawiasu) musimy użyć "uciekającej postaci" (escape character, zabawne... ).

Dla nawiasu trójkątnego jest to znak akcentu "`" (na klawiszu z tyldą, nazywany również "odwrotnym apostrofem"). Natomiast aby wysłać otwierającą lub zamykającą klamrę musimy ją wpisać w klamry. {}} - daje efekt w postaci zamkniętego nawiasu (klamry). O ile nawiasy i klamry nie są aż tak popularne to znak akcentu jest wykorzystywany w AHK całkiem często.

Jak jesteśmy przy nawiasach to może zastanawiacie się ile tekstu można wstawić takim hotstringiem. Nie wiem szczerze czy ktoś to testował ale z kilkoma linijkami nie ma problemu, wystarczy zawarcie ich w nawiasach :

::text1::
(
pierwsza linijka.
druga.
trzecia.
	czwarta i ostatnia.
)

Wiersze z nawiasami nie mogą zawierać innego tekstu, zauważyłem także że dopiero kropka z enterem działa jak nowy wiersz (inaczej sklei linijki w jedną). Zachowane jest wcięcie zrobione za pomocą tabulatora.

Wykrywanie kontekstu

Tutaj nie ma co odkrywać ameryki - hotstringi wpisane poniżej jakiejkolwiek dyrektywy #IfWinActive odnoszącej się do jakiejkolwiek aplikacji czy okna (poprzez exe, klasę lub tytuł) działają tylko i wyłączenie w tej aplikacji (czy oknie). Wpisane na początku skryptu (powyżej jakichkolwiek dyrektyw) działają wszędzie.

Jeżeli nie macie dość to możecie skoczyć do następnego odcinka

PostScriptum.

W kwestii wyjaśnienia - plan na ten epizod był inny, miał on (odcinek nie plan) mieć charakter podsumowujący ale w trakcie pisania i sprawdzania materiałów okazało się że jest tam "more than meets the eye", zdecydowałem się podążyć tą ścieżką zamiast zrobić wszystko po łebkach.  

windows programowanie inne

Komentarze