AutoIt/Makra
Co to jest makro?
edytujW 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
edytujIlość 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
edytujJest 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
edytujMakro 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
edytujTo 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.