选择“工具”==“菜单编辑器”==添加主菜单"mnuaaa"==添加从菜单"mnubbb"==在从菜单mnubbb中选择"快捷键"==ctrl+G完成 代码段 Private Sub mnubbb_Click() MsgBox "ctrl+G" '提示ctrl+G End Sub
' 按 Ctrl + G 启动记事本Option ExplicitPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = vbCtrlMask And KeyCode = 71 Then Shell "notepad.exe", vbNormalFocus End If End SubPrivate Sub Form_Load() Me.KeyPreview = True End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 7 Then '这里就是你放的代码 End If End Sub 但首先你必须把Form.keypreview=true这样就OK了。 建议你去搜索问题答案
我就是想把ctri+G这个组合键送给串口,如何来实现
注册系统热键 模块: Option Explicit
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long
Public Const WM_HOTKEY = &H312 Public Const MOD_ALT = &H1 Public Const MOD_CONTROL = &H2 Public Const MOD_SHIFT = &H4 Public Const GWL_WNDPROC = (-4) Public Const ShowHotKey = &H44EE Public preWinProc As Long Public Modifiers As Long, uVirtKey As Long
Private Type taLong ll As Long End Type Private Type t2Int lWord As Integer hword As Integer End Type Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then If wParam = ShowHotKey Then Dim lp As taLong, i2 As t2Int lp.ll = lParam LSet i2 = lp If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then 'Debug.Print "HotKey Shift亅Alt亅G Pressed " '你的操作,这里是显示窗体 Form1.Show End If End If End If wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) End Function窗体Option Explicit Sub Form_Load() Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
Modifiers = MOD_ALT + MOD_SHIFT + MOD_CONTROL
uVirtKey = vbKeyG ret = RegisterHotKey(Me.hwnd, ShowHotKey, Modifiers, uVirtKey)
Me.Hide End Sub
Private Sub Form_Unload(Cancel As Integer) Dim ret As Long ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc) Call UnregisterHotKey(Me.hwnd, ShowHotKey) End Sub
代码段
Private Sub mnubbb_Click()
MsgBox "ctrl+G" '提示ctrl+G
End Sub
If Shift = vbCtrlMask And KeyCode = 71 Then
Shell "notepad.exe", vbNormalFocus
End If
End SubPrivate Sub Form_Load()
Me.KeyPreview = True
End Sub
这个代码应该添加在那??
If KeyAscii = 7 Then
'这里就是你放的代码
End If
End Sub
但首先你必须把Form.keypreview=true这样就OK了。
建议你去搜索问题答案
模块:
Option Explicit
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long
Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)
Public Const ShowHotKey = &H44EE
Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long
Private Type taLong
ll As Long
End Type
Private Type t2Int
lWord As Integer
hword As Integer
End Type
Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = ShowHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then
'Debug.Print "HotKey Shift亅Alt亅G Pressed "
'你的操作,这里是显示窗体
Form1.Show
End If
End If
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function窗体Option Explicit
Sub Form_Load()
Dim ret As Long preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
Modifiers = MOD_ALT + MOD_SHIFT + MOD_CONTROL
uVirtKey = vbKeyG
ret = RegisterHotKey(Me.hwnd, ShowHotKey, Modifiers, uVirtKey)
Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, ShowHotKey)
End Sub