Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di Laiton
    Registrato dal
    Dec 2011
    Messaggi
    95

    [Vb.NET] Intercettare pressione tasti con programma in background

    salve,
    avrei la necessità di intercetare la pressione di determinati tasti (es "alt") con il programma in background, per avviare determinate azioni.

    Per il momento sono arrivato a questo:
    codice:
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
              If My.Computer.Keyboard.CtrlKeyDown = False AndAlso My.Computer.Keyboard.AltKeyDown = True Then
                'azioni
            End If
        End Sub
    Questo codice mi va già abbastana bene, l'unico inconveniente è quando voglio passare da un finestra del desktop all'altra con TAB + ALT che la condizione risulta vera.
    Ho inserito anche il controllo "My.Computer.Keyboard.CtrlKeyDown = False" così da eveitare l'avvio dell'evento con "CTRL+ALT+CANC" e la pressione del "ALT GR".

    Un'altra alternativa è questa:
    codice:
     Private Sub body_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            If e.KeyValue = Keys.F9 Then
                MsgBox("ok")
            End If
        End Sub
    Ma questo funziona solo quando il form è attivo è selezionato.

    Qualche consiglio? mi andrebbe anche bene la pressione di qualche altro tasto tipo F9 o F6 che sono quasi inutilizzati, ma con "My.Computer.Keyboard" ci sono una serie di pulsanti limitati poco utilizzati.

    Grazie del supporto.

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Ciao,
    per poter intercettare la pressione dei tasti con un programma in background (privo di focus sul software) dovresti usare PInvoke. Questo potrebbe essere un esempio (non testato personalmente) giusto per indicarti la strada.
    Da notare che con molta probabilità il software che usa un qualsiasi monitoraggio della tastiera potrebbe essere segnalato come potenziale minaccia (key logger) dalla maggior parte degli antivirus, sopra tutto se in accoppiata ad altre funzioni "critiche", oltre ad altre situazioni tipo il modo in cui viene installato (es: tramite cmd; powershell ecc.). Di conseguenza per farlo girare è molto probabile che sarai costretto ad aggiungerlo manualmente alle esclusioni dell'antivirus.

  3. #3
    Utente di HTML.it L'avatar di Laiton
    Registrato dal
    Dec 2011
    Messaggi
    95
    Quote Originariamente inviata da U235 Visualizza il messaggio
    Ciao,
    per poter intercettare la pressione dei tasti con un programma in background (privo di focus sul software) dovresti usare PInvoke. Questo potrebbe essere un esempio (non testato personalmente) giusto per indicarti la strada.
    Da notare che con molta probabilità il software che usa un qualsiasi monitoraggio della tastiera potrebbe essere segnalato come potenziale minaccia (key logger) dalla maggior parte degli antivirus, sopra tutto se in accoppiata ad altre funzioni "critiche", oltre ad altre situazioni tipo il modo in cui viene installato (es: tramite cmd; powershell ecc.). Di conseguenza per farlo girare è molto probabile che sarai costretto ad aggiungerlo manualmente alle esclusioni dell'antivirus.
    Ciao,
    ti ringrazio per la risposta. Questo metodo lo avevo scartato a priori proprio perla situazione da te citata. Volevo rimanere sul "My.Computer.Keyboard" così da fare una cosa semplice. Diciamo che al momento posso anche arrangiare intercettando la combinazione di SHIFT+ ALT così da evitare ogni problema.
    Ma la situazione non mi soddisfa molto.

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Che io sappia il problema lo hai già citato tu, ovvero facendo così funziona solo con il form in primo piano.

  5. #5
    Utente di HTML.it L'avatar di Laiton
    Registrato dal
    Dec 2011
    Messaggi
    95
    Quote Originariamente inviata da U235 Visualizza il messaggio
    Che io sappia il problema lo hai già citato tu, ovvero facendo così funziona solo con il form in primo piano.
    va bene, volevo chiedere consiglio alla community per sapere se fossero presenti alternative valide, ma mi accontenterò di SHITF+ALT.
    Grazie del supporto.

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.