搭建论坛《搭建之星》论坛经验交流 → 如何检测NUMLOCK按键的状态


  共有1378人关注过本帖树形打印

主题:如何检测NUMLOCK按键的状态

帅哥哟,离线,有人找我吗?
xuexue
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:123 积分:1038 威望:0 精华:0 注册:2009-12-14 15:33:12
如何检测NUMLOCK按键的状态  发帖心情 Post By:2014-9-30 10:09:22

如何检测NUMLOCK按键的状态,请高手能写个试下吗

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
jsphp
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:助工 帖子:208 积分:1502 威望:0 精华:0 注册:2009-6-24 14:47:09
  发帖心情 Post By:2014-10-3 10:28:13

如何检测Insert、Capslock、NumLock、ScrollLock状态键的状态

 

可以调用Win API的Getkeyboardstate()函数。

常量 按键名称

VK_INSERT insert键

VK_NUMLOCK Num Lock键

VK_CAPITAL Caps Lock键

VK_SCROLL Scroll Lock键

键盘缓冲区每一位都有一位特定的格式,对于状态键来说,最低位是1时表示状态键处于ON状态,你可以使用odd()函数来确定这一

位的状态,以下是一个简单的例子请参考。例子中放置一个Timer控件、一个StatusBar状态条。

procedure TForm1.Timer1Timer(Sender: TObject);

var ks:tkeyboardstate;

begin

getkeyboardstate(ks);//检测键盘函数

if odd(ks[VK_NUMLOCK]) then

statu**ar1.panels.items[0].text:='NUM'

else

statu**ar1.panels.items[0].text:='';

if odd(ks[VK_INSERT]) then

statu**ar1.panels.items[1].text:='INSERT'

else

statu**ar1.panels.items[1].text:='';

if odd(ks[VK_CAPITAL]) then

statu**ar1.panels.items[2].text:='CAPITAL'

else

statu**ar1.panels.items[2].text:='' ;

if odd(ks[VK_SCROLL]) then

statu**ar1.panels.items[3].text:='SCROLL'

else

statu**ar1.panels.items[3].text:='';

end; 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
seedog
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:助工 帖子:225 积分:1909 威望:0 精华:0 注册:2009-6-6 13:51:24
  发帖心情 Post By:2014-10-3 10:43:39

需要用到 调用系统 API ...


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

如何检测NUMLOCK按键的状态








签名