AU3如何读取系统大小写锁定和数字小键盘的状态?
本帖最后由 autothem 于 2009-6-17 14:49 编辑AU3如何读取系统大小写锁定和数字小键盘的状态?
现在用的上网本没有大写锁定指示灯和小键盘指示灯,有些时候很麻烦
想用AU3写一个能够读取并设定大小写、数字小键盘状态的程序,不知道有没有相应的函数 本帖最后由 lynfr8 于 2009-6-12 18:28 编辑
当然有方法啦
1、安装一个摄像头,并对准键盘的Num Lock 的 灯;
http://h50176.www5.hp.com/images/c01200410.gif
2、调用API通过读取Num Lock 灯的亮与灭来确定小键盘是否出于锁定状态
-------------------------------------------------------------------------------------------
呵呵,以上请牛人自测,相信必然能行的通!
:face (20):
-------------------------------------------------------------------------------------------
上面开个小玩笑
其实如果要获取NumLock键状态,可以用API函数GetKeyState来获取
定义外部函数Function int GetKeyState (int nVirtKey) Library"USER32.DLL"
定义常量 CONSTANT INT VK_NUMLOCK = 144 //0x90
获取NumLock键状态MessageBox('',GetKeyState(VK_NUMLOCK))
1则为按下,如果为0则为未按下
用au3来表达就是一下代码了:Global Const $VK_NUMLOCK = 0x90
Global Const $VK_SCROLL = 0x91;这个你也可以检测
Global Const $VK_CAPITAL = 0x14
;MsgBox(0,"test",_GetKeyState($VK_CAPITAL))
If _GetKeyState($VK_CAPITAL)=1 then
MsgBox(0,"test",'大小写锁定已打开')
Else
MsgBox(0,"test",'大小写锁定已关闭')
EndIf
If _GetKeyState($VK_NUMLOCK)=1 then
MsgBox(0,"test",'小键盘已打开')
Else
MsgBox(0,"test",'小键盘已关闭')
EndIf
Func _GetKeyState($VK_Code)
Local $ret = DllCall("user32.dll", "long", "GetKeyState", "long", $VK_Code)
Return $ret
EndFunc至于其他的键盘检测可以参考下这个---键盘鼠标参数表---
传送门:http://www.autoitx.com/viewthr ... omuid=1003#pid33494 学习下楼上的代码 呵呵,第一个方法很有技术含量啊,涉及到图像输入、分析、处理及模式识别,厉害……
看来要研究win api了 既然是检测按键 那用_IsPressed 设定大小写灯点亮代码:AutoItSetOption ( "SendCapslockMode",0)
Send("{CAPSLOCK on}") 小键盘的AutoItSetOption 没有 拜服第一个方法,望再给具体点! Send("{NUMLOCK on}")
最后还是找到了设置数字小键盘灯亮的代码 代码太好用了{:face (356):}
页:
[1]