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:
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:
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:
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:
Adesso recuperiamo lo stato effettivo del tasto 'Q' richiamando la funzione ed inserendone il valore di ritorno all'interno della variabile StatoDiQ:
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:
Riportiamo di seguito il codice completo dell'esempio appena visto:
|
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 |