Jump to content
zbeng

Functii API [VB]

Recommended Posts

Functii API

Ce este o functie API? O functie API (application programming interface) este defapt o interfata, un cod sursa in care putem folosi un dll (dynamic link library) din windows, pentru a obtine anumite avantaje si pentru lucrul cu ferestrele si fisierele mai mult.

Cum se construieste o functie API? In primul rand o functie API se declara in modul (in visual basic): Project(Alt+P) - Add Module(Alt+M) si selectati un modul nou. Acum ca il avem adaugat sa dam un exemplu cum se declara o functie API:

Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextW" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Sa explicam putin functia API. Primul lucru cu care am inceput este Public, acest parametru face ca functia sa poata fi folosita si in interiorul form-ului; in loc de Public se putea pune si Private, dar aceasta nu mai facea functia folosibila in form. Sa trecem mai departe. Declare Function declara functia, nu cred ca mai este nevoie de explicatii suplimentare, GetWindowText este numele functiei in Form si cu aceasta vom apela functia. Lib user32 ne indica locul in care functia API se afla, in acest exemplu, in libraria user32 (user32.dll), in alte exemple de functii API este posibil ca functia sa fie declarata in libraria kernel32, sau altele, etc. Alias GetWindowTextW sugereaza numele cu care se gaseste functia in libraria user32. Nu la toate functiile este necesar acest argument, dar aici este nevoie de el, deoarece GetWindowText <>GetWindowTextW. Acum, ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long reprezinta argumentele functiei si nu aveti cum sa le stiti pe dinafara sau sa le deduceti, pur si simplu cautati pe google sau pe msdn.com (cel mai bun site de functii API).

Acum, ca am invatat cum se declara o functie API sa invatam si cum se foloseste o astfel de functie.

Dim hwnd As Long
Dim nume As String
hwnd = FindWindow("Winamp v1.x", vbNullString)
nume = GetWindowText(hwnd, melodie, 100)

Mai intai functia FindWindow trebuie declarata in modul (http://msdn2.microsoft.com/en-us/library/ms633499.aspx), GetWindowText am declarat-o deja. Functia FindWindow gaseste handle’ul ferestrei Winamp-ului (clasa ultimelor versiuni de Winamp este Winamp v1.x si handle’ul unei ferestre se poate afla doar stiind clasa acesteia. Ce este un handle? Handle-ul este un identificator al fiecarei ferestre, este o notiune abstracta. Fiecare buton, fereastra, textbox, orice element vizibil are un handle (HWND). Handle-ul unei ferestre reprezinta un nume al acesteia, declarand o functie API nu o putem utiliza pe o fereasta fara a cunoaste hande-ul acelei ferestre) si il atribuie variabilei hwnd. In continuare, GetWindowText extrage titlul ferestrei Winamp-ului si o atribuie variabilei nume, care poate fi folosita in continuare dupa preferinte.

Pentru a afla mai multe despre handle vizitati urmatorul link:

http://msdn2.microsoft.com/en-us/library/aa159979(office.10).aspx

Sa consideram acum un alt exemplu de functie API. Vom considera o functie care stinge o fereasta (ca si cum am apasa pe “cruciulita”). In modul, evident, declaram functia:

Public Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long

Sa explicam putin si functia. HWND, din interiorul parametrului reprezinta handle’ul ferestrei care va fi inchisa. Si acum sa consideram un simplu cod:

Private Sub Form_Load()
CloseWindow Me.hwnd
End Sub

Aceasta inchide fereasta curenta imediat la deschiderea acesteia (cand este vorba despre fereasta proprie, nu mai este nevoie sa ii gasim handle’ul, putem folosi pur si simplu: Me.hwnd).

Pentru alte informatii puteti da un search pe google. ;)

De asemenea, pentru a intelege mai bine functiile API, vizitati site-ul

http://www.msdn.com

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...