Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [VB.NET] Utilizzo Shortcuts con programma ridotto ad icona.

    Ciao a tutti.

    Ho gestito il controllo NotifyIcon, e su questo è stato applicato un ContextMenuStrip che visualizza un menu con delle azioni da eseguire.
    Volevo sapere se, quando il programma è ridotto ad icona posizionato nella system tray, fosse possibile richiamare un'azione del ContextMenuStrip tramite uno shortcuts.
    (questo per non dover utilizzare il mouse e fare clic sull'icona e selezionare l'azione da eseguire).


    E' fattibile in qualche modo?

  2. #2
    Certo che è fattibile.

    L' azione la metti in una Sub tutta sua, supponiamo Sub MiaAzione_Esci(), da a richiamare anche dalla relativa voce del ContextMenuStrip.

    La cosa migliore da fare sarebbe poi un Hook della tastiera (googla). La cosa più semplice e veloce è invece inserire un Timer nel form e nell' evento generato metti:

    If GetAsyncKeyState(Keys.F7) <> 0 Then MiaAzione_Esci

    Nell' esempio esegui la sub quando premi F7

    Ovviamente avrai definito GetAsyncKeyState

    <DllImport("user32.dll")> _
    Private Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
    End Function

    dopo aver abiltato le API con

    Imports System.Runtime.InteropServices

    Bye

  3. #3
    grazie eziogsv per la risposta celere,
    appena ho un po di tempo mi cimento con le importanti nozioni che mi hai dato (sono un neofita del vb.net quindi mi serve tempo per capire quel che mi hai detto, ma ci riusciro', cascasse una pannocchia )

  4. #4
    perfetto ci sono riuscito!!


    Pero' se volessi controllare una combinazione di tasti premuti insieme ? (quindi tipo ALT + F7 ad esempio)

  5. #5
    Mah............ ci saranno sicuramente soluzioni più "eleganti".

    Comunque questa, buttata lì sui due piedi, funziona:

    codice:
            Dim RetVal As Short = GetAsyncKeyState(Keys.ControlKey)
    
            If RetVal <> 0 Then
                If GetAsyncKeyState(Keys.A) <> 0 Then Debug.Print("Premuto Control + A")
            End If

  6. #6
    dai l'eleganza la consideriamo un'altra volta

    la soluzione da te adottata va benissimo (soprattutto è funzionante!)

    Grazie mille per l'aiuto!!

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.