| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 483 人关注过本帖
标题:VB挽救键盘
只看楼主 加入收藏
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
结帖率:37.5%
收藏
 问题点数:0 回复次数:2 
VB挽救键盘

前些天不小心把键盘从电脑桌上摔了下来,几个键都摔掉了,幸好装上以后没什么事,只是NumLock就锁定了,而且失效了,怎么按都没反应,不能从小键盘输入数字,我一向都习惯使用小键盘的,现在没小键盘了输入数字很不方便,软键盘也没有NunLock键,这就急死我了
我首先偿试用sendkeys模拟按键,但还是没效果,后来翻了些资料,用API实现了模拟按键,代码如下

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long

Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Public Sub SetNumLock(ByVal bLock As Boolean)
Dim i As Boolean, ScanCode As Long
i = CBool(GetKeyState(vbKeyNumlock) And vbShiftMask)
If i <> bLock Then
ScanCode = MapVirtualKey(vbKeyNumlock, 0)
Call keybd_event(vbKeyNumlock, ScanCode, 0, 0)
Call keybd_event(vbKeyNumlock, ScanCode, KEYEVENTF_KEYUP, 0)
End If
End Sub

Private Sub Command1_Click()
SetNumLock True
end Sub

按下Command1后,NumLock灯终于亮了起来,而且再按NumLock键时也已经可以切换了,只是NumLock灯还是无反应.
搜索更多相关主题的帖子: 键盘 
2007-10-25 14:34
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 

还好只是摔坏NumLock,要是摔坏了空格


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-25 15:12
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
.....虽然精神可嘉,不过我还是建议你去买个键盘...

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-25 15:22
快速回复:VB挽救键盘
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024909 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved