Questo topic e' stato chiuso dal moderatore.
30/10/10 18:25
walker93
Sto facendo un riproduttore musicale e fino adesso funziona tutto al meglio
Però voelvo anche inserire l'interagibilità con i MediaButton della tastiera:
Keys.MediaNextTrack
Keys.MediaPlayPause
Keys.MediaPreviousTrack
Keys.MediaStop
Keys.VolumeDown
Keys.VolumeMute
Keys.VolumeUp
il problema è che utilizzando la funzione GetAsyncKeyState all'interno di un timer per capire se quei tasti sono premuti, succede che ogni <interval del timer> se sto tenendo premuto il pulsante viene continuamente chiamata la procedura associata al pulsante
Ad esempio:
se sto gestendo il VolumeMute e l'intervallo del timer è 100ms, ogni 100ms il programma mette muto e mette l'audio praticamente a intermittenza.
Come posso ovviare questo problema?
Ultima modifica effettuata da walker93 30/10/10 18:26
aaa
31/10/10 14:08
Il Totem
Usa degli switch, variabili booleane, eccetera...
aaa
31/10/10 19:52
walker93
avevo provato a disattivare il timer quando aveva eseguito già una volta il comando, ma visto che nel timer controllo quando il tasto era premuto se lo disattivo non riuesco più a capire quando il tasto non è più premuto.
Dovrei utilizzare 2 timer:
uno controlla quando un tasto viene premuto e nel caso avvia la procedura,il secondo timer e ferma questo timer.
l'altro controlla quando il tasto non è più premuto e nel caso riabilità il primo timer e ferma questo.
solo che mi scoccia veramente tanto usare 2 timer per dei tasti
aaa
01/11/10 14:39
Il Totem
Puoi usare un dizionario Keys > TimeSpan. Il timespan associato ad ogni tasto indica quanto tempo è passato dall'ultima volta che è stato rilevato come premuto. Se è maggiore di, diciamo, 0.8 secondi, allora lo processi, altrimenti lo ignori. Basta un solo timer.
aaa
01/11/10 17:05
walker93
Proverò a usare il timespan...
Ma permettimi un'altra domanda:
con
If GetAsyncKeyState(Tasto) <> 0 then
controllo quando un tasto è premuto(fisicamente schiacciato)
con un altro numero che non sia 0 posso controllare il "keydown" cioè solo quando il tasto scende?
If GetAsyncKeyState(Tasto) = 1024 '(numero inventato)
in questo modo anche se il tasto è premuto al prossimo tick del timer, non entra nella condizione perchè non sta scendendo ma è già sceso completamente...
aaa
03/11/10 16:28
walker93
ho provato con il dizionario e il timespan senza successo...
cosi ho usato con un array e adesso funziona tutto come previsto.
Grazie
aaa