Los Hook o ganchos, se implementan para atrapar todos los eventos del sistema, pero en el caso de los HotKeys sólo hace falta registrarlos.
Vas a encontrar infinidad de ejemplos en donde se realiza un Do Loop infinito tratando de detectar la pulsación de las teclas y esto consume mucho procesamiento de tu CPU.
Private Sub Form_Load()
Me.WindowState = vbMinimized
erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0)
'Chequea si es correcta la asignación
If erg& <> 1 Then
MsgBox "no se ha crado el Hotkey", vbOKOnly, _
"Error"
End If
' Acá se pone un Hook, con una acción determinada.
erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0)
End Sub
'en un Modulo Bas
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Long) As Long
Declare Function DefWindowProc Lib "user32" _
Alias "DefWindowProcA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Const WM_SETHOTKEY = &H32
Public Const WM_SHOWWINDOW = &H18
Public Const HK_SHIFTA = &H141 'Shift + A
Public Const HK_SHIFTB = &H142 'Shift * B
Public Const HK_CONTROLA = &H241 'Control + A
Public Const HK_ALTZ = &H45A
'Existen otros procedimientos mucho más complejos y funcionales, pero el código es mucho más complicado que esto, si los querés te puedo enviar el código.