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.