Blog (7)
Komentarze (191)
Recenzje (1)

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

@BriHecatoZautomatyzuj swoje życie, czyli prosty blog o AutoHotKey — epizod 320.05.2018 18:06

W tym odcinku omówimy sobie wiązanie naszych skryptów z konkretnymi aplikacjami. Jak wcześniej pisałem, dotąd, każdy z naszych dwóch skryptów przykładowych działał w całym Windowsie. Często jest to działanie niepożądane, nie tylko ze względu na "kolizję" poleceń ale także dlatego że możemy chcieć by w każdej aplikacji ten sam skrót wywoływał inne działanie.

Zajrzyj do poprzedniego: Epizod 2

Dyrektywy na porządku dziennym

Pierwszą dyrektywą (to określenie bardzo istotnych poleceń zaczynających się od hasza czy też płotka) i myślę że najczęściej stosowaną będzie następująca:

#IfWinActive, "namiar poprzez okno"

Określa ona nam - jeżeli dane "okno" jest aktywne zastosuj poniższe Hotkeye i Hotstringi (i inne formuły). Jednak musimy podać w tej dyrektywie które "okno" nas interesuje - musimy zaadresować dyrektywę do pożądanej aplikacji.

A robi się to używając odpowiednich kluczy. W miejscu gdzie wpisałem "namiar poprzez okno" należy oczywiście podać cel naszego kodu i możemy zrobić to na co najmniej 3 sposoby (podaję te najprostsze):

  1. początek nazwy jaka występuje w pasku tytułu (TitleBar) okna danej aplikacji
  2. ahk_exe nazwa-pliku-wykonywalnego-aplikacji
  3. ahk_class nazwa-klasy-okna

Ad1. W pierwszym przypadku wydawałoby się że jest to banalne, że możemy wpisać "Notepad++" "Firefox" "Word" - i wyraźnie powiążemy sobie nasze skrypty z oknami tych aplikacji. Jednak są tu dwa małe haczyki:

Jak widać pierwszy haczyk jest taki że w wielu przypadkach (na szczęście nie w TotalCommanderze) nazwa programu jest na końcu całego tytułu okna, a najpierw znajduje się nazwa otwartego pliku. Takie zachowanie dotyczy wszystkich aplikacji "edytorów" w których pracujemy nad jakimiś innymi plikami poprzez ich otwarcie i zapisanie. Nie będzie to dotyczyło aplikacji których działanie ogranicza się do ich interfejsu, a nie do edycji. W każdym bądź razie żeby obejść tą niedogodność, przed dyrektywą musimy zmienić tryb dopasowywania tytułów - "SetTitleMatchMode," i podać mu wartość "2" (oznacza że interesujący nas tekst może znajdować się w dowolnym miejscu tytułu okna) - wtedy dyrektywa ładnie zadziała.

Gdy napiszemy już kilka hotkeyów czy hotstringów dla różnych programów - wasz kod może wyglądać podobnie - położenie "SetTitleMatchMode" ma zastosowanie od linijki w której go umieścicie, ale nie powyżej.

Jednak dzięki temu sami wprowadzamy się na drugi haczyk - ponieważ jeśli będziemy mieli plik o nazwie "Word.txt" otwarty w notatniku, to w notatniku nasze skrypty też zadziałają (czy to dobrze czy to źle, zależy od skryptu). Spróbujmy drugiego wariantu.

Ad2. W drugim przypadku nasze powiązanie jest precyzyjniejsze - wpisujemy "ahk_exe firefox.exe" to znaczy nazwę exe'ka uruchomionego programu - tak uzupełniona dyrektywa sprawi że skrypty będą obowiązywać tylko w tej aplikacji. Problemy mogą (ale nie muszą) się pojawić gdy trafimy na oporne programy - np. Libre Office, w którym wszystkie programy pakietu jako exe mają wspólny "soffice.bin"! I cały misterny plan ... wiecie dokąd.

Bez nerwów, to też da się obejść. Trzeba użyć rozwiązania z pierwszego punktu i połączyc go z ahk_exe, "SetTitleMatchMode" będzie miał zastosowanie tylko dla LibreOffice Calc:

I to już prawie że działa :P Szkopulik jest wtedy gdy chcemy żeby działało tylko w głównym oknie aplikacji a nie w innych podokienkach, np. w dialogu zapisywania, otwierania czy drukowania. Na to mamy trzeci wariant.

Ad3. Trzeci przypadek to możliwość zaprezentowania fantastycznego skryptu instalującego się razem z AHK - WindowSpy. Jest to mały skrypt napisany w AHK wraz z interfejsem graficznym, wyświetlający więcej niż podstawowe informacje o aplikacjach

Po uruchomieniu i kliknięciu w oknie naszej niepokornej aplikacji, zaraz w pierwszych linijkach WindowsSpy pokaże nam właśnie pełny tytuł okna, klasę i exe:

d:\_BRI - dokumenty i materiały\myszka.ahk - Notepad++
ahk_class Notepad++
ahk_exe notepad++.exe

Skąd możemy skopiować sobie naszą klasę do naszej dyrektywy. Jeśli używacie skryptu z 2 epizodu to wystarczy tylko kciuk :)

Ok. Zatrzymajmy się tu. Macie dyrektywę, która pozwala na ustalenie gdzie co ma działać, jej stosowanie zależne jest od was. Jest kilka haczyków ale można dojść do właściwego powiązania stosując powyższe metody solo lub parami. Nie ma problemu żeby używać zarówno ahk_exe i ahk_class. Z moich obserwacji najczęściej (ale nie zawsze) przynosi to najlepsze (ale nie idealne) efekty.

Celowo nie rozwijam teraz dalej tematu dyrektyw jak i możliwości Win Spy - trzeba zostawić trochę materiału na przyszłość :)

Następny: Epizod 4

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.