Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti, volevo chiedervi come implementare in un programma, un'azione in seguito alla pressione di una particolare combinazione di tasti come Ctrl + Alt + H o Ctrl + Alt + S
Beh, se vuoi che l'applicazione "se ne accorga" anche quando l'utente non la ha in focus l'unica è usare un timer (scegli tu quale tipologia) che verifichi in lassi di tempo molto brevi lo stato fisico dei tasti.
Per fare ciò potresti usare un'API chiamata GetAsyncKeyState che richiede il codice della key e che restituisce due valori Short: -32767 se il tasto è down e -32768 se è up
Eccoti un esempio che verifica lo status di "a" (dove tmrCheck è un controllo timer):
Codice sorgente - presumibilmente VB.NET
PublicClass MyForm
DeclareFunction GetAsyncKeyState Lib "user32"(ByVal KeyCode As Int32)As Int16
PrivateSub tmrCheck_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles tmrCheck.Tick
If GetAsyncKeyState(Keys.A)=-32767 Then MessageBox.Show("Adryx has just pressed A")
N.B. ricordati che ci sono diverse tipologie di CTRL (destro,sinistro etc..) ma per fortuna l'enum Keys li raccoglie tutti
Ultima modifica effettuata da Question il 26/04/2011 alle 20:59
()
Newbie
Messaggi: Iscritto:
1
Postato alle 12:42
Mercoledì, 27/04/2011
Disapprovo l'approccio di Question... perchè usare un timer e le API se puoi usare semplicemente l'evento KeyPress/KeyDown?
Poi utilizzi l'enum Keys per sapere se i pulsanti della combinazione sono stati premuti.
Se invece devi individuare la pressione anche quando la tua form non è attiva, allora si che devi ricorrere all'API GetAsyncKeyState, ma ti conviene farlo non in un timer ma in un BackgroundWorker o in un thread separato apposta.
Perchè non il timer?
Perchè con un thread separato riesci a eseguire la routine moltissime volte più spesso che al tick di un timer
KeyPress e KeyDown sono eventi scatenati da controlli dell'applicazione, quindi interni e dipendenti dall'applicazione stessa. Se le shortcut devono funzionare quando l'app è in background, non puoi usare alcun evento gestito.