![]() |
![]() |
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