グローバルホットキー

特定のキーをフックしたいときはグローバルホットキーをつかうといい
コードは続きを読むで

    Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, _
                                               ByVal fsModifiers As Integer, ByVal vk As Keys) As Integer
    Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer
    Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Short
    Private Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal nAtom As Short) As Short
    Private Const MOD_ALT As Integer = &H1
    Private Const MOD_CONTROL As Integer = &H2
    Private Const MOD_SHIFT As Integer = &H4
    Private Const MOD_WIN As Integer = &H8
    Private Const WM_HOTKEY As Integer = &H312

    Dim hotkeyID As Short

    Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        hotkeyID = GlobalAddAtom(Guid.NewGuid.ToString)
        RegisterHotKey(Me.Handle, hotkeyID, MOD_WIN, Keys.S)
    End Sub

    Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        UnregisterHotKey(Me.Handle, hotkeyID)
        GlobalDeleteAtom(hotkeyID)
    End Sub

    Protected Overrides Sub WndProc(ByRef m As Message)
        MyBase.WndProc(m)
        If m.Msg = WM_HOTKEY Then
            '// ここで実行する関数をよぶ
        End If
    End Sub