Alice  |  Tin.it  |  Foto album |  Disco remoto |  Community 

 

Usare API in Visual Basic

 

 Cosa Sono

         API (Application Programming Interface) è un  set di funzioni predefinite di Windows usate per controllare l’aspetto ed il comportamento di ogni elemento del sistema Operativo (dalla visualizzazione del DeskTop alla allocazione della memoria per un nuovo processo). Ogni azione dell’utente provoca l’esecuzione di una o più funzioni API che informano Windows su cosa stia accadendo.

         E’ qualcosa di simile al codice nativo di Windows. Altri linguaggi agiscono con una shell che provvede automaticamente e facilmente ad accedere alle API. VB ha fatto un grande passo in questa direzione.

         In questo paragrafo parleremo di come ogni linea di codice scritta in VB viene tradotta in funzione API ed inviata a Windows. Quando ad esempio nel codice scriviamo Form1.Print ... VB non fa altro che richiamare la funzione API  TextOut scambiandosi i parametri necessari  .

 

         Anche quando l’utente esegue un click sul form, Windows trasmette un messaggio al sistema , VB riceve la chiamata, la analizza, ed esegue l’evento (Button_Click).

         Le funzioni API risiedono in DLLs (ad es. User32.dll, GDI32.dll, Shell32.dll, ...) installate nella directory di sistema Windows .

 

Dichiarazioni API

         Come già detto, le funzioni API sono dichiarate in Dlls situate nella directory Windows System. E’ possibile scrivere una dichiarazione API nella stessa maniera con cui si scrive una qualsiasi funzione esportata da una DLL, ma VB ha messo a disposizione un sistema più pratico per far ciò. L’ API Text Viewer.

         Per inserire dichiarazioni API in un progetto, dopo aver lanciato l’API text viewer, caricare il file Win32Api.txt (oppure .MDB se precedentemente convertito per velocizzare le operazioni), selezionare “Dichiarazioni”, cercare la funzione desiderata, premere “Aggiungi” e quindi “copia”. Spostarsi sul proprio progetto ed incollare la dichiarazione. La stessa cosa è possibile per ottenere i tipi e le costanti della funzione.

Alcuni problemi che potrebbero verificarsi sono:

         Supponiamo di voler dichiarare una funzione nel modulo Form1. Quando si incolla una dichiarazione e si avvia il programma, VB rileva un errore di compilazione , ..poiché la dichiarazione incollata nella sezione generale del Form, non può essere dichiarata come “Public” per rimediare, è sufficiente sostituire la voce “Public” con “Private” prima della Dichiarazione.

 

Va ricordato però che nel caso di “Private”, la dichiarazione sarà valida solo per il modulo in cui è stata scritta.

Dichiarando la funzione come “Public” sarà valida per l’intero progetto, ed andrà incollata in un Modulo.Bas

         In alcuni casi è possibile ottenere messaggi di nomi ambigui rilevati da VB. Ciò significa  che ci sono due funzioni, costanti o qualsiasi altra cosa con lo stesso nome. Come la maggior parte delle funzioni,  viene utilizzata la clausola Alias (Pseudonimo), che consente di utilizzare diversi nomi anzichè il nome originale, quindi il nome della funzione, può essere cambiato semplicemente.

        

Messaggi

         Un messaggio, è il mezzo che utilizza Window per dire al programma, che si sono verificati eventi di Input che devono essere processati. Un messaggio ad es. viene trasmesso se un utente clicca su un bottone, muove il mouse, o scrive in una text box.

         Tutti i messaggi, vengono trasmessi unitamente a quattro parametri – l’handle della finestra,un messaggio di identificazione, e due valori (Long) 32-bit. L’Handle della finestra contiene l’handle in cui il messaggio risiede. L’identificatore, è il tipo di input verificatosi (click, mousemove) e i due valori, forniscono informazioni addizionali per il messaggio (ad es. dove è il cursore del mouse dopo un movimento dello stesso).

        

         Così, quando un utente muove il mouse su un form, Windows trasmette il messaggio WM_MOUSEMOVE alla finestra attiva, VB riceve il messaggio ed i suoi parametri ed esegue il codice che è stato scritto nell’evento MouseMove. Strada facendo, VB ha trasformato il secondo valore 32-bit del messaggio  (coordinate  x ed y della posizione del mouse in pixels, 16-bit ognuno) in due valori Single in twips.

          Poiché i valori restituiti da VB sono in twips, occorrerà convertirli nuovamente in pixel.

Qualcuno si chiederà se sia possibile ricevere il messaggio direttamente. Un sistema c’è !!!

Il “ Subclassing”, dovrebbe essere usato solo se strettamente necessario poichè potrebbe costituire un freno alla sicurezza della programmazione VB .