• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual Basic skróty klawiszowe w tle

VPS Starter Arubacloud
+1 głos
229 wizyt
pytanie zadane 27 lipca 2019 w Visual Basic przez Zwyczajne konto Nowicjusz (190 p.)

Witam,

Kod poniżej sprawia że po naciśnięciu F9 uruchamia się timer1. Jak zrobić aby po naciśnięciu F9 timer się uruchamiał gdy program jest w tle

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.F9 Then
            Timer1.Start()
        End If
    End Sub

 

1 odpowiedź

0 głosów
odpowiedź 6 lipca 2020 przez VBService Ekspert (255,440 p.)
edycja 6 lipca 2020 przez VBService

Virtual-Key Codes.
 

Imports System.Runtime.InteropServices

Public Class Form1

    Dim testCount As Integer = 0

    Public Const MOD_ALT As Integer = &H1 'Alt key
    Public Const WM_HOTKEY As Integer = &H312

    <DllImport("User32.dll")> _
    Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, _
                        ByVal id As Integer, ByVal fsModifiers As Integer, _
                        ByVal vk As Integer) As Integer
    End Function

    <DllImport("User32.dll")> _
    Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, _
                        ByVal id As Integer) As Integer
    End Function

    Private Sub Form1_Load(ByVal sender As System.Object, _
                        ByVal e As System.EventArgs) Handles MyBase.Load
        RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.F9)
        RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.F10)
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, _
                        ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                        Handles MyBase.FormClosing
        UnregisterHotKey(Me.Handle, 100)
        UnregisterHotKey(Me.Handle, 200)
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = WM_HOTKEY Then
            Dim id As IntPtr = m.WParam
            Select Case (id.ToString)
                Case "100"
                    Timer1.Start()
                    Debug.Print("Timer1.Start")
                Case "200"
                    Timer1.Stop()
                    Debug.Print("Timer1.Stop")
            End Select
        End If
        MyBase.WndProc(m)
    End Sub


    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        testCount += 1
        Debug.Print(testCount)
    End Sub
End Class

 

Podobne pytania

0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 2 kwietnia 2019 w Python przez Maciej Złotorowicz Gaduła (4,230 p.)
0 głosów
0 odpowiedzi 164 wizyt

92,832 zapytań

141,776 odpowiedzi

320,824 komentarzy

62,163 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...