AutoIt/Makra
Co to jest makro?
[edytuj]W AutoIt przez makra rozumie się pewien specjalny rodzaj predefiniowanych w interpreterze zmiennych globalnych.
Ich odrębność w stosunku do zwykłych zmiennych manifestuje się tym, że programista nie ma możliwości nadawania lub zmieniania ich wartości (z wyjątkiem dwóch przypadków, które zostaną później opisane).
Wartości tych zmiennych są nadawane i zmieniane przez system operacyjny lub interpreter AutoIt'a. Zmienne te są wykorzystywane w celu przekazywania do programu różnych informacji o systemie, sprzęcie lub wykonywanym skrypcie.
Aby podkreślić szczególnie znaczenie makr, ich nazwy poprzedza się znakiem @ (zamiast standardowego $) np.: @error.
Opis wybranych makr
[edytuj]Ilość makr jest bardzo duża więc opis ograniczę do tych najbardziej użytecznych i najczęściej używanych (pełny opis w "AutoIt Help").
Znaki specjalne:
----------------------------------------------------------------------------------
@CR - znak powrotu karetki, jak Chr(13)
@LF - znak nowego wiersza, jak Chr(10)
@CRLF - znak powrotu karetki i nowego wiersza, jak Chr(13)&Chr(10)
@TAB - znak tabulatora, jak Chr(9)
----------------------------------------------------------------------------------
Wskazania zegara systemowego:
----------------------------------------------------------------------------------
@YEAR - aktualny rok, format: rrrr (np.: 2011)
@MON - aktualny miesiąc (od 01 do 12)
@YDAY - aktualny dzień roku (od 001 do 365 lub 366)
@MDAY - aktualny dzień miesiąca (od 01 do 28, 29, 30 lub 31)
@WDAY - aktualny dzień tygodnia (od 1 do 7)
@HOUR - aktualna godzina (od 00 do 23)
@MIN - aktualna minuta (od 00 do 59)
@SEC - aktualna sekunda (od 00 do 59)
@MSEC - aktualna milisekunda (od 000 do 999)
----------------------------------------------------------------------------------
Obsługa funkcji:
----------------------------------------------------------------------------------
@error - kod błędu (opis w rozdziale "Makra @error i @extended")
@extended - dodatkowa wartość zwracana przez funkcję (opis j/w)
@exitCode - kod zakończenia skryptu ustawiany przez funkcję Exit
@HotKeyPressed - ostatnio wciśnięty "gorący klawisz"
@NumParams - ilość parametrów przekazanych do funkcji
----------------------------------------------------------------------------------
GUI (używane jako argument funkcji GUISetState, WinSetState, Run, RunWait,
FileCreateShortcut i FileGetShortcut):
----------------------------------------------------------------------------------
@SW_SHOW - okno widoczne
@SW_SHOWNA - okno widoczne, nieaktywne
@SW_SHOWDEFAULT - okno aktywowane z ustawieniami domyślnymi programu
@SW_SHOWMAXIMIZED - okno wyświetlane jako zmaksymalizowane
@SW_SHOWMINIMIZED - okno wyświetlane jako zminimalizowane
@SW_SHOWMINNOACTIVE - okno wyświetlane jako zminimalizowane, nieaktywne
@SW_SHOWNOACTIVATE - jak @SW_SHOWNORMAL, ale okno nieaktywne
@SW_SHOWNORMAL - włącza i wyświetla okno, jeżeli okno jest zminimalizowane
lub zmaksymalizowane systemu przywraca je do swojego
pierwotnego rozmiaru i położenia.
@SW_HIDE - okno ukryte
@SW_MINIMIZE - okno zminimalizowane
@SW_MAXIMIZE - okno zmaksymalizowane
@SW_RESTORE - cofnięcie minimalizacji okna
@SW_DISABLE - okno unieruchomione
@SW_ENABLE - odblokowanie okna
@SW_LOCK - okno zablokowane (nie można w nim nic narysować)
@SW_UNLOCK - okno odblokowane
----------------------------------------------------------------------------------
GUI (inne):
----------------------------------------------------------------------------------
@GUI_CtrlId - numer ID ostatni klikniętej kontrolki
@GUI_CtrlHandle - uchwyt do ostatnio klikniętej kontrolki
@GUI_WinHandle - uchwyt do ostatnio klikniętego okna GUI
----------------------------------------------------------------------------------
Zasobnik systemowy (Tray):
----------------------------------------------------------------------------------
@TRAY_ID - identyfikator ostatnio klikniętego elementu podczas działania
funkcji TraySetOnEvent() lub TrayItemSetOnEvent()
@TrayIconFlashing - 1 gdy ikona w zasobniku miga, w przeciwnym razie 0
@TrayIconVisible - 1 gdy ikona w zasobniku jest widoczna, w przeciwnym razie 0
----------------------------------------------------------------------------------
Skrypt AutoIt:
----------------------------------------------------------------------------------
@AutoItExe - nazwa z pełną ścieżką dostępu do aktualnie uruchomionego
programu AutoIt (nazwa skryptu jeżeli skrypt jest skompilowany)
@AutoItPID - PID procesu uruchomionego skryptu
@AutoItX64 - 1 gdy skrypt uruchomiony natywnie w wersji 64-bitowej Windows
@AutoItVersion - wersja translatora np. 3.3.14.0
@compiled - 1 gdy uruchomiony skrypt jest skompilowany
@exitMethod - kod metody zakończenia skryptu, 0 - normalne zakończenie,
1 - zakończenie funkcją Exit, 2 - zamknięcie opcją Exit
w tray'u, 3 - zakończenie przez wylogowanie użytkownika,
4 - zakończenie przez zamknięcie systemu Windows
@ScriptLineNumber - nr aktualnie wykonywanego wiersza skryptu
@ScriptDir - folder uruchomionego skryptu
@ScriptFullPath - ścieżka do uruchomionego skryptu (łącznie z jego nazwą)
@ScriptName - nazwa uruchomionego skryptu
----------------------------------------------------------------------------------
Sprzęt i system:
----------------------------------------------------------------------------------
@OSArch - architektura uruchomionego systemu operacyjnego 32 lub 64 bitowa
("X86", "IA64", "X64")
@OSVersion - wersja OS ("WIN_10", "WIN_81", "WIN_8", "WIN_7", "WIN_VISTA", "WIN_10,
"WIN_XP", "WIN_XPe", "WIN_2016", "WIN_2012R2",
"WIN_2012", "WIN_2008R2", "WIN_2008", "WIN_2003")
@OSType - "WIN32_NT" dla XP/2003/Vista/2008/Win7/2008R2/Win8/2012/Win8.1/Win10
@OSServicePack - numer zainstalowanego pakietu serwisowego
@CPUArch - "X86" - procesor 32-bitowy, "X64 - procesor 64-bitowy
@KBLayout - kod ustawienia klawiatury np. 0x407 - niemiecka,
0x409 - angielska
0x415 - polska
@ComputerName - nazwa sieciowa komputera
@UserName - nazwa aktualnego użytkownika
@HomeDrive - nazwa dysku zawierającego bieżący folder domowy użytkownika
@ComSpec - ścieżka do interpretera poleceń (plik cmd.exe)
@HomePath - ścieżka do folderu domowego użytkownika (bez nazwy dysku)
@StartupDir - ścieżka do bieżącego folderu auto-startu
@SystemDir - ścieżka do folderu System32
@TempDir - ścieżka do folderu tymczasowego
@WindowsDir - ścieżka do folderu instalacyjnego systemu Windows
@WorkingDir - ścieżka do folderu bieżącego
@DesktopHeight - pionowa rozdzielczość ekranu
@DesktopWidth - pozioma rozdzielczość ekranu
@DesktopDepth - głębia kolorów wyświetlacza w bitach na piksel
@DesktopRefresh - częstotliwość odświeżania ekranu w hercach
@IPAddress1 - adres IP pierwszego adaptera sieciowego
@IPAddress2 - adres IP drugiego adaptera sieciowego (0.0.0.0 jeżeli brak)
@IPAddress3 - adres IP trzeciego adaptera sieciowego (0.0.0.0 jeżeli brak)
@IPAddress4 - adres IP czwartego adaptera sieciowego (0.0.0.0 jeżeli brak)
----------------------------------------------------------------------------------
Foldery systemowe:
----------------------------------------------------------------------------------
@AppDataCommonDir - ścieżka do folderu Dane aplikacji
@ComSpec - Ścieżka do interpretera używanego przez wiersz poleceń
@DesktopCommonDir - ścieżka do pulpitu
@DocumentsCommonDir - ścieżka do dokumentów
@FavoritesCommonDir - ścieżka do ulubionych
@MyDocumentsDir - ścieżka do Moje dokumenty
@ProgramsCommonDir - ścieżka folderu Start Menu na programy
@StartMenuCommonDir - ścieżka folderu Start Menu
@StartMenuDir - ścieżka do menu Start bieżącego użytkownika
@StartupCommonDir - ścieżka do folderu Autostart
@WindowsDir - ścieżka do folderu Windows
@WorkingDir - bieżący/aktywny katalog roboczy. Zawiera końcowy ukośnik odwrotny tylko wtedy, gdy skrypt znajduje się w katalogu głównym dysku.
Makra @error i @extended
[edytuj]Jest to szczególny rodzaj makr, gdyż są to jedyne makra, które można zmieniać bezpośrednio wewnątrz skryptu. Nie można jednak nadać im wartości w sposób stosowany dla zwykłych zmiennych. Należy do tego użyć odpowiedniej funkcji.
UWAGA: Oba makra mogą przyjmować tylko wartości typu INTEGER.
Makro @error
[edytuj]Makro to używane jest do przekazywania kodu błędu jaki ewentualnie powstał podczas działania wywołanej funkcji. Taką obsługę błędów ma prawie każda funkcja wbudowana i biblioteczna. Pisząc własne funkcje możemy także wyposażyć je w obsługę błędów. Służy do tego funkcja SetError:
SetError ( kod_błędu [, extended [, wartość_zwracana]] )
Funkcja nadaje wartość makru @error i opcjonalnie makru @extended. Zwraca podaną jako argument wartość (domyślnie funkcja nie zwraca żadnej wartości).
kod_błędu - liczba określająca kod błędu,tą wartość przyjmie makro @error, standardowo przyjęto: 0 - błąd nie wystąpił, 1 - błąd wystąpił.
extended - ewentualne kody określające rodzaj błędu, tą wartość przyjmie makro @extended
wartość_zwracana - wartość zwracana przez funkcję SetError, domyślnie funkcja nie zwraca żadnej wartości.
Przykład:
$c=podziel(2,0)
$er=@error
$ex=@extended
MsgBox(0,"","Wynik = "&$c)
MsgBox(0,"","@error = "&$er)
MsgBox(0,"","@extended = "&$ex)
Func podziel($a,$b)
If $b=0 Then ;gdy dzielenie przez zero
SetError(1, -1) ;nadanie wartości @error i @extended
Return "-1.#IND" ;standardowa wartość zwracana gdy wynik nieokreślony
else
SetError(0)
Return $a/$b ;wynik dla prawidłowych danych
EndIf
EndFunc
Makro @extended
[edytuj]To makro wykorzystywane jest do zwracania z funkcji dodatkowych informacji. Przykładowo wbudowana funkcja StringReplace wykorzystuje makro @extended do zwrócenia ilości podmian (patrz rozdział: "Napisy (stringi) / Przetwarzanie stringów (funkcje AutoIt'a) / Tworzenie stringu przez zamianę w stringu argumentu jednego podstringu na inny")
SetExtended ( kod [, wartość_zwracana]] )
Funkcja nadaje wartość makru @extended. Zwraca podaną jako argument wartość (domyślnie funkcja nie zwraca żadnej wartości).
kod - liczba określająca dodatkową informację zwracaną przez funkcję, tą wartość przyjmie makro @extended.
wartość_zwracana - wartość zwracana przez funkcję SetExtended, domyślnie funkcja nie zwraca żadnej wartości.