找回密码
 加入
搜索
查看: 2223|回复: 8

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

[复制链接]
发表于 2009-6-12 12:31:41 | 显示全部楼层 |阅读模式
本帖最后由 autothem 于 2009-6-17 14:49 编辑

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

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

想用AU3写一个能够读取并设定大小写、数字小键盘状态的程序,不知道有没有相应的函数
发表于 2009-6-12 18:23:06 | 显示全部楼层
本帖最后由 lynfr8 于 2009-6-12 18:28 编辑

当然有方法啦
1、安装一个摄像头,并对准键盘的Num   Lock 的 灯;   

2、调用API通过读取Num   Lock   灯的亮与灭来确定小键盘是否出于锁定状态
-------------------------------------------------------------------------------------------
呵呵,以上请牛人自测,相信必然能行的通!

-------------------------------------------------------------------------------------------
  上面开个小玩笑
其实如果要获取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[0]
EndFunc
至于其他的键盘检测可以参考下这个---键盘鼠标参数表---
传送门:http://www.autoitx.com/viewthr ... omuid=1003#pid33494
发表于 2009-6-12 20:50:48 | 显示全部楼层
学习下楼上的代码
 楼主| 发表于 2009-6-12 21:59:32 | 显示全部楼层
呵呵,第一个方法很有技术含量啊,涉及到图像输入、分析、处理及模式识别,厉害……

看来要研究win api了
发表于 2009-6-13 02:32:56 | 显示全部楼层
既然是检测按键 那用_IsPressed
发表于 2009-6-16 02:09:17 | 显示全部楼层
设定大小写灯点亮代码:
AutoItSetOption ( "SendCapslockMode",0)
Send("{CAPSLOCK on}") 
小键盘的AutoItSetOption 没有
发表于 2009-6-16 08:57:12 | 显示全部楼层
拜服第一个方法,望再给具体点!
发表于 2009-6-17 00:52:25 | 显示全部楼层
Send("{NUMLOCK on}")
最后还是找到了设置数字小键盘灯亮的代码
发表于 2011-11-3 22:13:14 | 显示全部楼层
代码太好用了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 09:36 , Processed in 0.077892 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表