高手帮帮忙。。。关于热键定义。。

bluesky23 2004-08-19 09:21:12
我现在想把键盘按键定义成热键,定义过程如下,程序运行的时候“,”、“.“、“/”和“;”号键不行,其它的键都可使用,不知为什么,我测试过键值,也对的啊。
注:MOD_ZERO=&00
RegisterHotKey Me.hwnd, &HB111, MOD_ZERO, vbKeyZ '定义 Z 为热键
RegisterHotKey Me.hwnd, &HB112, MOD_ZERO, vbKeyX '定义 X 为热键
RegisterHotKey Me.hwnd, &HB113, MOD_ZERO, vbKeyC '定义 C 为热键
RegisterHotKey Me.hwnd, &HB114, MOD_ZERO, vbKeyV '定义 V 为热键
RegisterHotKey Me.hwnd, &HB115, MOD_ZERO, vbKeyB '定义 B 为热键
RegisterHotKey Me.hwnd, &HB116, MOD_ZERO, vbKeyN '定义 N 为热键
RegisterHotKey Me.hwnd, &HB117, MOD_ZERO, vbKeyM '定义 M 为热键
RegisterHotKey Me.hwnd, &HB118, MOD_ZERO, 44 '定义 , 为热键
RegisterHotKey Me.hwnd, &HB119, MOD_ZERO, 46 '定义 . 为热键
RegisterHotKey Me.hwnd, &HB120, MOD_ZERO, 47 '定义 / 为热键

RegisterHotKey Me.hwnd, &HB121, MOD_ZERO, vbKeyA '定义 A 为热键
RegisterHotKey Me.hwnd, &HB122, MOD_ZERO, vbKeyS '定义 S 为热键
RegisterHotKey Me.hwnd, &HB123, MOD_ZERO, vbKeyD '定义 D 为热键
RegisterHotKey Me.hwnd, &HB124, MOD_ZERO, vbKeyF '定义 F 为热键
RegisterHotKey Me.hwnd, &HB125, MOD_ZERO, vbKeyG '定义 G 为热键
RegisterHotKey Me.hwnd, &HB126, MOD_ZERO, vbKeyH '定义 H 为热键
RegisterHotKey Me.hwnd, &HB127, MOD_ZERO, vbKeyJ '定义 J 为热键
RegisterHotKey Me.hwnd, &HB128, MOD_ZERO, vbKeyK '定义 K 为热键
RegisterHotKey Me.hwnd, &HB129, MOD_ZERO, vbKeyL '定义 L 为热键
RegisterHotKey Me.hwnd, &HB130, MOD_ZERO, 59 '定义 ; 为热键
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2004-08-21
  • 打赏
  • 举报
回复
是你的虚拟键代码不对吧,我测试的结果没有任何问题,下面是全部的代码:
只有一个窗体:
Option Explicit

Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
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 Const VK_ME_NUM_1 = &HBE '字符"."的虚拟键代码
Private Const VK_ME_NUM_2 = &HBC '字符","的虚拟键代码
Private Const VK_ME_NUM_3 = &HBF '字符"/"的虚拟键代码
Private Const VK_ME_NUM_4 = &HBA '字符";"的虚拟键代码
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
'loop until bCancel is set to True
Do While Not bCancel
'wait for a message
WaitMessage
'check if it's a HOTKEY-message
If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
'minimize the form
Shell "notepad", vbNormalFocus
End If
DoEvents
Loop
End Sub

Private Sub Command1_Click()
Me.Caption = "test"
End Sub

Private Sub Form_Load()
Dim ret As Long
bCancel = False
ret = RegisterHotKey(Me.hWnd, &HBFFF&, 0, VK_ME_NUM_1)
Show
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
'unregister hotkey
Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub




bluesky23 2004-08-19
  • 打赏
  • 举报
回复
斑主,(*)星哥,救命啊
bluesky23 2004-08-19
  • 打赏
  • 举报
回复
郁闷,自己UP
bluesky23 2004-08-19
  • 打赏
  • 举报
回复
高手帮帮忙啊?很急的
dandelionl 2004-08-19
  • 打赏
  • 举报
回复
看看

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧