Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [VB.NET-C#] Intercettare pressione tasti nella mia applicazione

    Salve, qualcuno sa indicarmi un esempio funzionante di come intercettare i tasti premuti sulla tastiera (ed eventualmente anche l'uso del mouse) solo nella mia applicazione? ne ho trovati diversi che mi permettevano di intercettare i tasti premuti a livello di sistema, ma a me non interessa.
    in VB.NET o C# è indifferente, l'importante è che intercetti solo nella mia applicazione.
    Ciao e grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Usa gli eventi della Form impostandone la relativa proprietà .KeyPreview a True

    codice:
     Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    'Tuo codice....
    End Sub
    
    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
    'Tuo codice....
    End Sub
    
    Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
    'Tuo codice....
     End Sub
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Pirelli ha ragione e per il mouse è così:

    codice:
        Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
            '...
        End Sub
    
        Private Sub Form1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDoubleClick
            '...
        End Sub
    
        Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
            '...
        End Sub
    
        Private Sub Form1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseEnter
            '...
        End Sub
    
        Private Sub Form1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
            '...
        End Sub
    
        Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
            '...
        End Sub
    
        Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
            '...
        End Sub
    
        Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
            'Questo è per intercettare il movimento della rotellina del mouse
        End Sub
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  4. #4
    Quando usi l'evento KeyDown, io ti consiglio di usare questo codice se vuoi eseguire una diversa funzione in base al tasto ke premi:
    codice:
    If e.keycode = keys.X (dove X è il tasto ke si preme) Then
     ...................
    End if

  5. #5
    Si, ma si tratta di intercettare i tasti e il mouse a livello dell'applicazione, "hook di sistema", solo che a me serve intercettare solo nel mio programma. Non si tratta del semplice KeyPress & C.

  6. #6
    Utente di HTML.it L'avatar di nifriz
    Registrato dal
    Jan 2008
    Messaggi
    2,058
    Intendi che li stessi tasti li vuoi intercettare anche se il click avviene su un oggetto diverso dalla mainform ma sempre e solo all'interno del tuo programma?

  7. #7
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Se è come ha detto nifriz basta che usi l'evento relativo (keydown ecc.) del controllo che vuoi monitorare.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  8. #8
    Utente di HTML.it L'avatar di nifriz
    Registrato dal
    Jan 2008
    Messaggi
    2,058
    Originariamente inviato da ShaleN
    Se è come ha detto nifriz basta che usi l'evento relativo (keydown ecc.) del controllo che vuoi monitorare.
    Esatto.
    Però penso che lui voleva farlo senza dover assegnare il metodo a tutti gli oggetti... almeno credo

  9. #9
    Però penso che lui voleva farlo senza dover assegnare il metodo a tutti gli oggetti... almeno credo
    eh si. Questo per esempio per avere la possibilità di gestire la pressione di alcuni tasti o delle operazioni con il mouse a livello di applicazione, tipo vorrei gestire la pressione dei tasti CTRL+TAB per passare da una finestra attiva all'altra(così come avviene in visual Studio), oppure premere il tasto F1 per aprire la guida...queste cose qui.
    Se avete metodo alternativo per ottenere ciò che voglio dite pure.
    Ciao

  10. #10
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Prova a scrivere una sola routine per tutta l'applicazione, magari in un modulo a parte, solo che nella clausola Handles scrivi tutti i controlli. Mi spiego meglio:

    codice:
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, Button1.KeyDown, txt1.KeyDown '<--
    'Tuo codice....
    End Sub
    È l'unica cosa che mi è venuta in mente.
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.