WinAPI
AutoIt pune la dispozitie si functii WinAPI. UDF-ul WinAPI.au3 are 194 functii insa in acest tutorial vom vorbi doar despre cele mai uzuale. Daca aveti intrebari despre vreo functie si nu este inclusa in aceasta lectie vizitati adresele mentionate la final de pagina.
1. _WinAPI_LoadLibrary
Mapeaza un modul executabil in spatiul de adrese. Functia are ca parametru un sir de caractere reprezentand numele fisierului (modulului executabil). Returneaza handle-ul modulului.
2. _WinAPI_FreeLibrary
Decrementeaza numarul de referinta al modulului DLL incarcat. Are ca parametru handle-ul returnat de functia _WinAPI_LoadLibrary. Functia va returna True in caz de succes si False in caz de eroare.

3. _WinAPI_DefWindowProc
Apeleaza procedura default pentru procesarea mesajului. Functia are 4 parametri: handle-ul ferestrei care intercepteaza mesajul, mesajul primit, wParam si lParam care specifica informatii suplimentare. Rezultatul functiei va fi in functie de mesajul interceptat.
4. _WinAPI_HiWord
Returneaza partea superioara ( un WORD) dintr-un DWORD. Functia are ca parametru o variabila care contine o valoare DWORD.
5. _WinAPI_LoWord
Returneaza partea inferioara (un WORD) dintr-un DWORD. Functia are ca parametru o variabila care contine o valoare DWORD.

6. _WinAPI_MakeLong
Returneaza un LongInt din doua numere intregi. Functia are ca parametri doua valori intregi.

7. _WinAPI_ShowCursor
Arata sau ascunde cursorul. Functia accepta ca parametru o valoare booleana: True pentru a arata cursorul si False pentru a ascunde cursorul.
8. _WinAPI_GetMousePos
Returneaza pozitia curenta a mouseului. Functia are 2 parametri (optionali): $fToClient care indica daca se face conversia la coordnatele clientului si $hWnd care este handle-ul ferestrei daca primul parametru are valoarea booleana True.
9. _WinAPI_GetCursorInfo
Returneaza un vector cu informatii despre cursorul global.
$aCursor[0] – True
$aCursor[1] – True daca cursorul este vizibil, False in caz contrar
$aCursor[2] – Handle-ul cursorului
$aCursor[3] – Coordonata X a cursorului
$aCursor[4] – Coordonata Y a cursorului

10. _WinAPI_WindowFromPoint
Rreturneaza handle-ul ferestrei dintr-un punct specific. Functia are ca parametru o structura $tagPOINT.

11. _WinAPI_PtInRect
Verifica daca un punct se afla in interiorul unui dreptunghi. Are c parametri o structura $tagRECT specifica dreptunghiului si o structura $tagPOINT specifica punctului. Functia va returna o valoare boolean: True daca punctul este in interiorul dreptunghiului si False in caz contrar.
12. _WinAPI_GetWindowRect
Creaza o structura $tagRECT specifica unei ferestre. Are ca parametru handle-ul ferestrei.

13. _WinAPI_GetWindowDC
Returneaza device context-ul unei ferestre. Functia are ca parametru handle-ul ferestrei si va returna un handle-ul device context-ului pentru fereastra specificata. De precizat ca dupa terminarea folosirii DC-ului in vederea desenarii trebuie il eliberati folosind _WinAPI_ReleaseDC.
14. _WinAPI_ReleaseDC
Elibereaza un device context. Functia are ca parametri handle-ul ferestrei si handle-ul DC-ului.
15. _WinAPI_CreatePen
Creaza un creion logic (pen). Are 3 parametri: stilul, latimea si culoarea. Pentru parametrul stil se poate alege una din urmatoarele constante: $PS_SOLID, $PS_DASH, $PS_DOT, $PS_DASHDOT, $PS_DASHDOTDOT, $PS_NULL sau $PS_INSIDEFRAME. Culoarea creionului trebuie pasata in format BGR. Daca latimea varfului creionului este zero atunci o linie desenata cu creionul va avea latimea unui pixel iar daca latimea varfului creionlui este 1 atunci stilul creionului trebuie sa fie unul din urmatorele: $PS_SOLID, $PS_NULL sau $PS_INSIDEFRAME. Inaintea folosirii unui creion intr-un DC trebuie selectat folosind functia _WinAPI_SelectObject. Dupa terminarea folosirii creionului logic trebuie apelata functia _WinAPI_DeleteObject pentru a sterge creionul.
16. _WinAPI_MoveTo
Specifica o noua pozitie intr-un DC. Functia are 3 parametri: handle-ul DC-ului si coordonata X, respectiv Y pentru noua pozitie. Functia returneaza True in caz de succes si False in caz de eroare.
17. _WinAPI_LineTo
Deseneaza o linie de la pozitia curenta (nu trebuie specificata) la o alta pozitie. Functia are 3 parametri: handle-ul DC-ului si coordonata X, respectiv Y pentru pozitia de final. Functia returneaza True in caz de succes si False in caz de eroare.
18. _WinAPI_DrawLine
Deseneaza o linie. Functia are 5 parametri: handle-ul DC-ului, coordonata X si Y pentru pozitia de inceput si coordonata X si Y pentru pozitia de final. Functia returneaza True in caz de succes si False in caz de eroare.
19. _WinAPI_SetBkMode
Seteaza modul de suprapunere a fundalului intr-un DC. Functia are 2 parametri: handle-ul DC-ului si modul de suprapunere care poate fi una din constantele: $OPAQUE si $TRANSPARENT. Functia va returna valoarea anterioara a modului de suprapunere.
20. _WinAPI_SetTextColor
Specifica culoarea textului intr-un DC. Functia are 2 parametri: handle-ul DC-ului si culoarea textului. Functia va returna culoarea anterioara a textului.
22. _WinAPI_SetBkColor
Specifica culoarea de fundal intr-un DC. Functia are 2 parametri: handle-ul DC-ului si culoarea fundalului. Functia va returna culoarea anterioara a textului.
23. _WinAPI_DrawText
Deseneaza text formatat intr-un dreptunghi specificat. Functia are 4 parametri: handle-ul DC-ului, textul, o structura $tagRECT care specifica dreptunghiul pentru desenarea textului si un flag (indicator). Parametrul flag specifica formatul textului si poate avea una din valorile acestea. (definite in WindowsConstants.au3).
24. _WinAPI_CreateFont
Creaza un font logic cu caracteristicile specificate. Parametri functiei sunt: inaltimea, latimea, unghiul de scapare, unghiul de orientare, grosime, atribut italic, atribut underline, atribut strikeout, charset, precizie de iesire, precizie de decupare, calitate,pasul si numele fontului (face name). Dintre acestia doar primii 2 parametri sunt obligatorii, restul sunt optionali.
25. _WinAPI_SelectObject
Selecteaza un obiect intr-un DC. Are ca parametri: handle-ul DC-ului si obiectul selectat. Functia va returna vechiul obiect selectat.
26. _WinAPI_DeleteObject
Sterge un obiect logic. Are ca parametru handle-ul obiectului (identificatorul). Functia returneaza True in caz de succes si False in caz de eroare.
27. _WinAPI_RedrawWindow
Actualizeaza un dreptunghi sau regiune a unei ferestre. Functia are ca parametri: handle-ul ferestrei si optional o structura $tagRECT specifica dreptunghiului, handle-ul unei regiuni si un flag care specifica tipul actualizarii. Parametrul flag poate fi o combinatie a urmatoarelor constante (definite in WindowsConstants.au3). Functia returneaza True in caz de succes si False in caz de eroare.
28. _WinAPI_InvalidateRect
Adauga un dreptunghi unei regiuni specifice ce urmeaza a fi actualizata folosind _WinAPI_RedrawWindow. Functia are 3 parametri: handle-ul ferestre, optional o structura $tagRECT specifica dreptunghiului si o valoare booleana care indica daca fundalul trebuie sters sau nu la actualizare.
29. _WinAPI_GetDesktopWindow
Returneaza handle-ul ferestrei desktop. Functia nu are parametri.

Nota: se poate observa in exemplul de mai sus ca functia _WinAPI_SetBkColor nu are niciun efect pentru ca modul de suprapunere este transparent, nu opac.
Rezultatul codului de mai sus este urmatorul (triunghiul albastru si textul din mijloc, fara coordonate):

30. _WinAPI_FatalAppExit
Afiseaza un mesaj de eroare si termina aplicatia. Functia are ca parametru mesajul care se afiseaza.
31. _WinAPI_GetAsyncKeyState
Determina daca o tasta este apasata cand functia este apelata. Functia are ca parametru tasta pentru test (VK Keys List). Daca tasta este apasata cel mai semnificativ bit este setat atunci tasta este apasata iar daca cel mai putin semnificativ bit este setat atunci tasta a fost apasata dupa apelul precedent al functiei _WinAPI_GetAsyncKeyState. In caz de eroare functia returneaza valoarea 0.
32. _WinAPI_GetCurrentProcess
Returneaza handle-ul procesului care apeleaza functia. Functia nu are parametri.
33. _WinAPI_GetCurrentProcessID
Returneaza identificatorul procesului (PID) care apeleaza functia. Functia nu are parametri.
34. _WinAPI_SetProcessAffinityMask
Seteaza o masca de afinitate pentru firele de executie ale unui proces. Functia are ca parametri: handle-ul procesului si masca de afinitate. Masca de afinitate poate avea valori multiple in functie de numarul de procesoare. Mai jos este o lista cu valorile pentru masca de afinitate, pentru maxim 4 procesoare.
|
Valoare |
Core 1 |
Core 2 |
Core 3 |
Core 4 |
|
0 |
Sistemul de operare alege |
|||
|
1 |
Da |
Nu |
Nu |
Nu |
|
2 |
Nu |
Da |
Nu |
Nu |
|
3 |
Da |
Da |
Nu |
Nu |
|
4 |
Nu |
Nu |
Da |
Nu |
|
5 |
Da |
Nu |
Da |
Nu |
|
6 |
Nu |
Da |
Da |
Nu |
|
7 |
Da |
Da |
Da |
Nu |
|
8 |
Nu |
Nu |
Nu |
Da |
|
9 |
Da |
Nu |
Nu |
Da |
|
10 |
Nu |
Da |
Nu |
Da |
|
11 |
Da |
Da |
Nu |
Da |
|
12 |
Nu |
Nu |
Da |
Da |
|
13 |
Da |
Nu |
Da |
Da |
|
14 |
Nu |
Da |
Da |
Da |
|
15 |
Da |
Da |
Da |
Da |
35. _WinAPI_GetProcessAffinityMask
Obtine masca de afinitate pentru un proces. Are ca parametru handle-ul procesului si returneaza un voctor care contine 3 elemente:
$aMask[0] – True in caz de succes, False in caz de eroare
$aMask[1] – Masca de afinitate a procesului
$aMask[2] – Masca de afinitate a sistemului

36. _WinAPI_GetClassName
Returneaza class name-ul unei ferestre. Are ca parametru handle-ul ferestrei.
37 . _WinAPI_GetFocus
Returneaza handle-ul ferestrei pe care are tastatura focus. Functia nu are parametri.
38. _WinAPI_SetFocus
Steaza focus pentru tastatura pe o fereastra specifica. Functia are ca parametru handle-ul ferestrei.

39. _WinAPI_IsWindowVisible
Returneaza starea de vizibilitate a unei ferestre. Are ca parametru handle-ul ferestrei si returneaza True daca fereastra este vizibila si False in caz contrar.
40. _WinAPI_ShowWindow
Specifica starea de vizibilitate pentru o fereastra. Functia are 2 parametri: handle-ul ferestrei si starea de vizibilitate a ferestrei (vezi lectia despre macro-uri pentru valori posibile).
41. _WinAPI_SetParent
Schimba fereastra parinte pentru o fereastra copil. Functia are 2 parametri: handle-ul ferestrei copil si handle-ul ferestrei parinte. Functia va returna handle-ul ferestrei parinte precedenta.
42. _WinAPI_GetParent
Returneaza handle-ul ferestrei parinte pe care o are o fereastra copil. Ca parametru are handle-ul ferestrei copil.
43. _WinAPI_GetForegroundWindow
Returneaza handle-ul ferestrei din prim plan. Functia nu are parametri. In unele cazuri poate returna NULL (de exemplu daca fereastra pierde starea activa).
44. _WinAPI_GetWindowWidth
Returneaza latimea unei ferestre. Ca parametru are handle-ul ferestrei.
45. _WinAPI_GetWindowHeight
Returneaza inaltimea unei ferestre. Ca parametru are handle-ul ferestrei.
46. _WinAPI_GetWindowText
Returneaza titlul unei ferestre. Ca parametru are handle-ul ferestrei.
47. _WinAPI_SetWindowText
Returneaza titlul unei ferestre. Ca parametri are handle-ul ferestrei si noul titlu.

48. _WinAPI_EnumWindows
Enumera toate ferestrele. Functia are 2 parametri: primul este o valoare booleana care indica daca se cauta doar ferestre vizibile sau se cauta toate si al doilea este handle-ul ferestrei de start (default e fereastra Desktop). Rezultatul este o matrice bidimensionala de forma:
[0][0] – Numarul de randuri in matrice (n)
[1][0] – Handle-ul ferestrei
[1][1] – Class name-ul ferestrei
…
[n][0] – Handle-ul ferestrei
[n][1] – Class name-ul ferestrei
49. _WinAPI_FindWindow
Returneaza handle-ul ferestrei top-level al carei class name si nume se potrivesc. Functia are 2 parametri: class name-ul si un sir de caractere care reprezinta numele ferestrei. Daca ultimul parametru este un empty string atunci toate numele de ferestre se potrivesc.
50. _WinAPI_FlashWindow
Bliteaza o fereastra in taskbar. Functia are 2 parametri: handle-ul ferestrei si o valoare booleana care indica daca se bliteaza (True) sau se revine la starea anterioara (False).
51. _WinAPI_EnableWindow
Activeaza sau dezactiveaza intrarile de la mouse si tastatura intr-o fereastra sau control. Are 2 parametri: handle-ul ferestrei (controlului) si o valoare booleana care indica daca se activeaza (True) sau dezactiveaza (False) intrarile de la periferice.

* Pentru orice intrebari sau nelamuriri legate de curs sau limbajul AutoIt accesati sectiunea AutoIt a forumului SkullBox sau platforma de suport tehnic NetHelp.