Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
La funzione GetKeyState
L'API GetKeyState rientra nella categoria delle funzioni relative all'utilizzo dei tasti e ai messaggi che in tal modo vengono inviati al sistema.
Probabilmente la GetKeyState si rivelerà ancora più semplice del previsto. In poche parole infatti individua se un tasto specifico è premuto, nel caso dei tasti semplici come quelli alfanumerici, oppure se è attivo (o disattivo) nel caso di tasti particolari quali ad esempio quello di attivazione del tastierino numerico.
Non è particolarmente intuitiva però l'interpretazione del valore di ritorno, ma di questo si parlerà successivamente.
La dichiarazione della funzione è la seguente:

Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Da tale dichiarazione risulta chiaro che la funzione è contenuta all'interno di user32.dll e che necessita di un solo parametro nVirtKey che come si vedrà più avanti corrisponde nientemeno che al codice del tasto del quale si vuole controllare lo stato.
Tale codice e dunque tale parametro viene passato all'API sottoforma di intero a 32 bit (As Long).
Il valore di ritorno della funzione è un intero che corrisponde allo stato del tasto.
E'proprio a questo codice che bisogna fare riferimento: nel caso in cui il bit &H1 sia attivo allora il tasto in questione risulta premuto, nel caso invece in cui sia attivo il bit &H8000 il tasto risulterà non premuto (o disattivato nel caso dei succitati tasti di funzione).
Il parametro nVirtKey, unico per la GetKeyState può essere letto nel modo specificato all'interno della seguente tabella:

nVirtKey E' il codice virtuale del tasto del quale si vuole leggere lo stato (attivo/disattivo per tasti particolari oppure premuto/non premuto per i tasti normali).

In ogni caso, per comprendere appieno il significato di quanto detto, conviene dare un'occhiata ad un esempio.
Nel codice seguente si verificherà lo stato di un tasto casuale, ad esempio il tasto 'Q', prendendo come istante iniziale per tale verifica, la pressione del mouse.
Prima di tutto, come è consuetudine, sarà necessario dichiarare la funzione, specificata in questo caso come Private in quanto utilizzeremo un solo modulo di codice, che corrisponde a quello nel quale è stata dichiarata l'API:

Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Alla pressione del mouse (senza fare distinzione tra tasto destro o sinistro), si darà avvio al processo di verifica dello stato del tasto. Dichiariamo quindi il valore di ritorno che otterremo come un intero.
Quest'operazione, anche se banale, è utile in quanto a differenza di alcune funzioni viste in precedenza, il valore della GetKeyState deve essere elaborato.
E' quindi buona norma dichiarare la variabile nella quale tale valore sarà archiviato:

Private Sub Command1_Click()
Dim StatoDiQ As Integer

Adesso recuperiamo lo stato effettivo del tasto 'Q' richiamando la funzione ed inserendone il valore di ritorno all'interno della variabile StatoDiQ:

StatoDiQ = GetKeyState(vbKeyQ)

dove vbKeyQ è il codice del tasto Q. Per conoscere tutti i codici dei tasti, fare riferimento alla guida MSDN oppure alla guida di VBA disponibile aprendo una sessione di Word e seguendo la voce Strumenti/Macro/Visual Basic Editor.
Adesso inizia la fase finale del progetto: il controllo eseguito sullo stato del tasto. Se il bit &H8000 è attivo allora il tasto è premuto, viceversa nel caso opposto:

If StatoDiQ And &H8000 Then
MsgBox "Il tasto Q risulta premuto."
Else
MsgBox "Il tasto Q NON risulta premuto."
End If
End Sub

Riportiamo di seguito il codice completo dell'esempio appena visto:

Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Private Sub Command1_Click()
Dim StatoDiQ As Integer
StatoDiQ = GetKeyState(vbKeyQ)
If StatoDiQ And &H8000 Then
MsgBox "Il tasto Q risulta premuto."
Else
MsgBox "Il tasto Q NON risulta premuto."
End If
End Sub



Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it