autothem 发表于 2009-6-12 12:31:41

AU3如何读取系统大小写锁定和数字小键盘的状态?

本帖最后由 autothem 于 2009-6-17 14:49 编辑

AU3如何读取系统大小写锁定和数字小键盘的状态?

现在用的上网本没有大写锁定指示灯和小键盘指示灯,有些时候很麻烦

想用AU3写一个能够读取并设定大小写、数字小键盘状态的程序,不知道有没有相应的函数

lynfr8 发表于 2009-6-12 18:23:06

本帖最后由 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

kn007 发表于 2009-6-12 20:50:48

学习下楼上的代码

autothem 发表于 2009-6-12 21:59:32

呵呵,第一个方法很有技术含量啊,涉及到图像输入、分析、处理及模式识别,厉害……

看来要研究win api了

sxd 发表于 2009-6-13 02:32:56

既然是检测按键 那用_IsPressed

autoit3CN 发表于 2009-6-16 02:09:17

设定大小写灯点亮代码:AutoItSetOption ( "SendCapslockMode",0)
Send("{CAPSLOCK on}") 小键盘的AutoItSetOption 没有

javarike 发表于 2009-6-16 08:57:12

拜服第一个方法,望再给具体点!

lynfr8 发表于 2009-6-17 00:52:25

Send("{NUMLOCK on}")
最后还是找到了设置数字小键盘灯亮的代码

零度深蓝 发表于 2011-11-3 22:13:14

代码太好用了{:face (356):}
页: [1]
查看完整版本: AU3如何读取系统大小写锁定和数字小键盘的状态?