Delphi可以调用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 statusbar1.panels.items[0].text:='NUM' else statusbar1.panels.items[0].text:=''; if odd(ks[VK_INSERT]) then statusbar1.panels.items[1].text:='INSERT' else statusbar1.panels.items[1].text:=''; if odd(ks[VK_CAPITAL]) then statusbar1.panels.items[2].text:='CAPITAL' else statusbar1.panels.items[2].text:='' ; if odd(ks[VK_SCROLL]) then statusbar1.panels.items[3].text:='SCROLL' else statusbar1.panels.items[3].text:=''; end;
var
vKeyBoardState: TKeyBoardState;
begin
GetKeyboardState(vKeyBoardState);
CheckBox1.Checked := vKeyBoardState[VK_CAPITAL] = 1;
end;
我怎么也想不到还有TKEYBOARDSTATE这样的类型存在!
---------------------------
常量 按键名称
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
statusbar1.panels.items[0].text:='NUM'
else
statusbar1.panels.items[0].text:='';
if odd(ks[VK_INSERT]) then
statusbar1.panels.items[1].text:='INSERT'
else
statusbar1.panels.items[1].text:='';
if odd(ks[VK_CAPITAL]) then
statusbar1.panels.items[2].text:='CAPITAL'
else
statusbar1.panels.items[2].text:='' ;
if odd(ks[VK_SCROLL]) then
statusbar1.panels.items[3].text:='SCROLL'
else
statusbar1.panels.items[3].text:='';
end;