VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



RegisterHotKey

by Andy Barilla (1 Submission)
Category: Windows API Call/Explanation
Compatability: Visual Basic 3.0
Difficulty: Unknown Difficulty
Date Added: Wed 3rd February 2021
Rating: (39 Votes)

Register a system wide hot key

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

Rate RegisterHotKey

'This example uses the MsgHook OCX but any similar OCX would also work
'iAtom stores the id used by the hotkey. If you have more then one hot key, use one atom for each
Dim iAtom As Integer
Private Sub Form_Load()
  Dim res As Long
  'Get a value for atom   
  iAtom = GlobalAddAtom("MyHotKey")
  'Register the Ctrl-Alt-T key combination as the hotkey
  res = RegisterHotKey(Me.hwnd, iAtom, MOD_ALT + MOD_CTRL, vbKeyT)
  'Setup msghook to receive the WM_HOTKEY message  
  Msghook1.HwndHook = Me.hwnd
  Msghook1.Message(WM_HOTKEY) = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
  Dim res As Long
  'Remove the hotkey and delete the atom
  res = UnregisterHotKey(Me.hwnd, iAtom)
  res = GlobalDeleteAtom(iAtom)
End Sub
Private Sub Msghook1_Message(ByVal msg As Long, ByVal wp As Long, ByVal lp As Long, result As Long)
  If msg = WM_HOTKEY Then
    If wp = iAtom Then
      'Do your thang...
      MsgBox "Boing!!!"
    End If
  End If
  Msghook1.InvokeWindowProc msg, wp, lp
End Sub

Download this snippet    Add to My Saved Code

RegisterHotKey Comments

No comments have been posted about RegisterHotKey. Why not be the first to post a comment about RegisterHotKey.

Post your comment

Subject:
Message:
0/1000 characters