如何改掉键盘的功能

fallback 2004-12-27 10:10:50
比如:小键盘0(vbKeyNumpad0),常规为0数字,现在想不执行0 ,改为按vbKeyNumpad0之后为触发自定义事件,是否可行,如何操作?
谢谢!
...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tztz520 2004-12-27
  • 打赏
  • 举报
回复
你测试一下.
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print KeyCode'看一下KeyCode有什么不同
End Sub

系统上的小键盘的0就是96
ret = RegisterHotKey(Me.hWnd, &HBFFF&, 0, 96)'这样就注册了小键盘上的0,你也可以根据KeyCode注册不同的按键
fallback 2004-12-27
  • 打赏
  • 举报
回复
TO: tztz520(午夜逛街)

我有个小键盘,功能跟键盘上的小键盘一样,那样子可以区别出是外接键盘还是系统上的键盘吗
tztz520 2004-12-27
  • 打赏
  • 举报
回复
'下面的代码可以实现.就是将小键盘的0注册为热键.

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
Public Sub ProcessMessages()
Dim Message As Msg
Do While Not bCancel
WaitMessage
If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
Debug.Print "你按了小键盘的0"
End If
DoEvents
Loop
End Sub


Private Sub Form_Load()
Dim ret As Long
bCancel = False
ret = RegisterHotKey(Me.hWnd, &HBFFF&, 0, 96)
Show
ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
bCancel = True
Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub
cindytsai 2004-12-27
  • 打赏
  • 举报
回复
看看:
http://community.csdn.net/Expert/topic/3663/3663735.xml?temp=.9183313
tztz520 2004-12-27
  • 打赏
  • 举报
回复
不客气 :)
fallback 2004-12-27
  • 打赏
  • 举报
回复
谢谢: tztz520(午夜逛街) !
2.1.02说明: 本软件是部分EDA软件的鼠标增强工具,单文件,去掉原来的DLL文件,支持protel99se,DXP,POWERPCB,OrCAD的capture、Cam350、Saber、PC Schematic、Allegro,并且对每个软件的功能都可设置,用户可根据使用习惯打开或者关闭功能。 针对protel99se,DXP(功能和从前一样): 1. 向上滚动滚轮 --> 放大,相当于PageUp(不能改掉软件原来的快捷键,否则就不灵了) 2. 向下滚动滚轮 --> 缩小,相当于PageDown(不能改掉软件原来的快捷键,否则就不灵了) 3. 按下滚轮 --> 切换有效图层并刷新,相当于小键盘'*'的功能 4. 按左键拖目标 --> 再按右键可旋转,相当于空格键的功能,在布局时非常好用,请留意 5. 按右键拖动屏幕 针对PADS(支持PADS2005SP2、PADS2007,别的版本没有测过,应该也支持): 1. 向上滚动滚轮 --> 放大,相当于PageUp 2. 向下滚动滚轮 --> 缩小,相当于PageDown 3. 按住鼠标右键移动,可移动工作区,相当于SHIFT+滚轮或者ALT+滚轮,不平滑 4. 鼠标中键点击 --> 切换图层,相当于F4,原中键点击功能废弃 5. 按左键拖目标 --> 再按右键可旋转,相当于空格键的功能,在布局时非常好用,请留意 针对OrCAD: 1. 向上滚动滚轮 --> 放大,相当于字母"I"键 2. 向下滚动滚轮 --> 缩小相当于字母"O"键 3. 按住鼠标右键移动,可移动工作区 针对Cam350: 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键 3. 按住鼠标右键移动,可移动工作区 针对Saber: 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键 针对PC Schematic(V11有测试): 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键, 原有快捷键要改 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键,原有快捷键要改 针对Allegro(15.7有测试,已经有中键缩放的新版本请禁止该功能): 1. 向上滚动滚轮 --> 放大,相当于"F10"键 2. 向下滚动滚轮 --> 缩小,相当于"F11"键

7,765

社区成员

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

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