加入收藏  广告服务  关于我们
 2003-9-16

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

发表:不详   阅读:次  关键字:不详   字体:[ ]

{**********************************************************}
{如何检测Insert、Capslock、NumLock、ScrollLock状态键的状态
{本程序在delphi 7.0+ win98se下测试通过
{
{Delphi可以调用Win API的Getkeyboardstate()函数。
---------------------------
常量 按键名称
VK_INSERT insert键
VK_NUMLOCK Num Lock键
VK_CAPITAL Caps Lock键
VK_SCROLL Scroll Lock键
---------------------------
键盘缓冲区每一位都有一位特定的格式,对于状态键来说,
最低位是1时表示状态键处于ON状态,我们可以使用odd()函数来确定
这一位的状态,以下是一个简单的例子请参考。
例子中放置一个Timer控件、一个StatusBar状态条。
{
{运行程序,按键盘上的状态键,对应状态条上的状态值会作出相应的响应
{可用于及时检测状态键的状态
{程序建立步骤:
{从win32 页面添加timer1控件
{属性
{enabled ->true
{interval ->100
{从system 页面添加statusbar1控件
{属性
{panels 添加panels[0],panels[1],panels[2],panels[3]
{
{函数 odd() 的用法
语法:
function Odd(X: Longint): Boolean;
描述:
当X值为偶数,返回TRUE,否则返回 FALSE }
{程序的执行部分在Timer事件中 }

{**********************************************************}
{声明: }
{ }
{Delphi 岛制作 }
{网址:www.DelphiDao.com }
{中国最专业的 Delphi 学习站点 }
{未经许可,不得以任何方式复制或抄袭四处传播 }
{版权所有,侵权必究 }

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, 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[0].text:='NUM'
else
statusbar1.panels[0].text:='';
if odd(ks[VK_INSERT]) then
statusbar1.panels[1].text:='INSERT'
else
statusbar1.panels[1].text:='';
if odd(ks[VK_CAPITAL]) then
statusbar1.panels[2].text:='CAPITAL'
else
statusbar1.panels[2].text:=''
if odd(ks[VK_SCROLL]) then
statusbar1.panels[3].text:='SCROLL'
else
statusbar1.panels[3].text:='';
end;

end.

 热门文章
 推荐信息