• 检测Insert、Capslock、NumLock、ScrollLock状态键的状态


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, AppEvnts, ComCtrls;

    type
      TForm1 = class(TForm)
        StatusBar1: TStatusBar;
        ApplicationEvents1: TApplicationEvents;
        procedure FormResize(Sender: TObject);
        procedure ApplicationEvents1Message(var Msg: tagMSG;
          var Handled: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormResize(Sender: TObject);
    begin
        with StatusBar1 do
        begin
            Panels[0].Width:=Form1.Width - Panels[1].Width -Panels[2].Width-Panels[3].Width -50;
        end;
    end;

    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
        if GetKeyState(VK_CAPITAL) <> 0 then
          StatusBar1.Panels[1].Text := ' CAP'
        else
          StatusBar1.Panels[1].text:='';

        if GetKeyState(VK_NUMLOCK) <> 0 then
          StatusBar1.Panels[2].Text := ' NUM'
        else
          StatusBar1.Panels[2].Text := '';

        if GetKeyState(VK_SCROLL) <> 0 then
          StatusBar1.Panels[3].Text := ' SCRL'
        else
          StatusBar1.Panels[3].Text := '';
    End;

    end.


    可以调用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.




    附件列表

    • 相关阅读:
      默认开机启动;通过Broadcastreceiver广播监听开机启动,实现"没有activity"的自启服务或者自启应用程序。
      android中一个应用程序启动另外一个应用程序,并传递数据。
      调用远程服务里的方法service,进程间通信adil的学习
      android学习之Service的笔记,里面service里有监听用户通话状态的实例
      modelform的操作以及验证
      Django中提供的6种缓存方式
      csrf 跨站请求伪造相关以及django的中间件
      cookies和session
      splinter
      cookie实现用户登录验证
    • 原文地址:https://www.cnblogs.com/xe2011/p/3876120.html
    Copyright © 2020-2023  润新知