Bạn sử dụng đoạn code này:
Code:
Option Explicit
Private Const MOD_ALT = &H1 'Phim ALT
Private Const MOD_CONTROL = &H2 'Phim Ctrl
Private Const MOD_SHIFT = &H4 'Phim Shift
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
Private Type POINTAPI
x As Long
y As Long
End Type
Private Type Msg
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
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 UnregisterHotKey _
Lib "user32" (ByVal hWnd As Long, _
ByVal id As Long) As Long
Private Declare Function PeekMessage _
Lib "user32" _
Alias "PeekMessageA" (lpMsg As Msg, _
ByVal hWnd As Long, _
ByVal wMsgFilterMin As Long, _
ByVal wMsgFilterMax As Long, _
ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage _
Lib "user32" () As Long
Private bCancel As Boolean
Private Sub ProcessMessages()
Dim Message As Msg
Do While Not bCancel
WaitMessage
'Kiem tra neu nhan Phim Ctrl + F
If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
Form1.Show
End If
DoEvents
Loop
End Sub
Private Sub Command1_Click()
Form1.Hide
End Sub
Private Sub Form_Load()
Dim ret As Long
bCancel = False
'Dang ky hotkey
' Ta co the dang ky voi Hotkey khac bang cach:
' Thay MOD_CONTROL la MOD_SHIFT neu ban muon to hop phim la SHIFT +...
' Hay la MOD_ATL neu ATL + ...
ret = RegisterHotKey(Me.hWnd, &HBFFF&, MOD_CONTROL, vbKeyF) ' Hotkey la Ctrl + F
Me.AutoRedraw = True
' Hien thi Form
Show
'Xu ly khi nhan Hotkey
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
'Huy bo dang ky Hotkey
Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub
Ở đây mình ví dụ tổ hợp phím là Ctrl + F
Button có tên là Command1
Form có tên là Form1.
Chúc bạn thành công.
Bookmarks