可以调用Win API的Getkeyboardstate()函数。 
常量 按键名称 
VK_INSERTI nsert键 
VK_NUMLOCK Num Lock键 
VK_CAPITAL Caps Lock键 
VK_SCROLL Scroll Lock键 
键盘缓冲区每一位都有一位特定的格式,对于状态键来说,最低位是1时表示状态键处于ON状态,你可以使用odd()函数来确定这一位的状态,以下是一个简单的例子请参考。例子中放置一个Timer控件、一个StayusBar1状态条。 
unit Unit1; interface uses 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
ExtCtrls, ComCtrls; type 
TForm1 = class(TForm) 
StatusBar1: TStatusBar; 
Timer1: TTimer; 
procedure Timer1Timer(Sender: TObject); 
private 
{ Private declarations } 
public 
{ Public declarations } 
end; var 
Form1: TForm1; implementation {$R *.DFM} 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; 
end.