• 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

Cloud VPS
+1 głos
284 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 (256,600 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ź 408 wizyt
pytanie zadane 2 kwietnia 2019 w Python przez Maciej Złotorowicz Gaduła (4,230 p.)
0 głosów
0 odpowiedzi 191 wizyt

93,467 zapytań

142,459 odpowiedzi

322,735 komentarzy

62,848 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

Kursy INF.02 i INF.03
...