-1 timer impostato fin dall'inizio su enabled e intervallo a 1000
Io dichiaro cosě il getasynckeystate:
Private Declare Function GetAsyncKeyState Lib "user32" Alias
"GetAsyncKeyState" (ByVal vKey As Keys) As Integer
Nel codice del TIMER:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If GetAsyncKeyState(Keys.F1) Then
MsgBox("Premuto")
End If
End Sub
Ecco, quando eseguo il codice l'IF viene sempre eseguito, anche se non premo
nulla sulla tastiera...Come mai?
Gli esempi riportati in rete mi paiono uguali al mio...
> Ecco, quando eseguo il codice l'IF viene sempre eseguito, anche se non premo
> nulla sulla tastiera...Come mai?
> Gli esempi riportati in rete mi paiono uguali al mio...
La funzione che valore ritorna?
>La funzione che valore ritorna?
Ho parzialmente risolto trovando un altro esempio che dichiara cosě:
Declare Auto Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As
Int32) As Int16
E nel TIMER:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
If GetAsyncKeyState(Keys.F) = -32767 Then
MsgBox("Tasto premuto)
End If
End Sub
Cosě funziona, perň sto notando che se il programma inizia un loop tale
controllo sul TIMER non viene piů preso fino alla fine del loop... :-(
In pratica il loop deve terminare quando lo decido io tramite una pressione
di un tasto non avendo il focus sull'applicazione stessa!
> Cosě funziona, perň sto notando che se il programma inizia un loop tale
> controllo sul TIMER non viene piů preso fino alla fine del loop... :-(
> In pratica il loop deve terminare quando lo decido io tramite una pressione
> di un tasto non avendo il focus sull'applicazione stessa!
Non me ne intendo di threading ma la butto lě, provare con un thread
separato?
Direi che non serve n� un secondo thread n� tantomeno un timer.
Basta cambiare la condizione di uscita dal loop "intensivo". Ad esempio:
Do ...
[blocco istruzioni]
If (GetAsyncKeyState(Keys.F1) <> 0) Then Exit Do
Loop
Bye
Raf
> Direi che non serve né un secondo thread né tantomeno un timer.
> Basta cambiare la condizione di uscita dal loop "intensivo"
Ah bhe messo così sicuramente :)
>Direi che non serve né un secondo thread né tantomeno un timer.
>Basta cambiare la condizione di uscita dal loop "intensivo". Ad esempio:
>Do ...
> [blocco istruzioni]
> If (GetAsyncKeyState(Keys.F1) <> 0) Then Exit Do
>Loop
E io direi che mi sono proprio perso in un bicchiere d'acqua!!
Grazie mille per il suggerimento che si è rilevato funzionante! ;)