⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 Delphi7编程80例(完全版)
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Button4: TButton;
    Button6: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(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    //奇数状态是激活
    Begin
    Panel1.Caption:='数字键按下';
    Panel1.Color:=clSkyBlue;
    end
  else
    Begin
    Panel1.Caption:='数字键松开';
    Panel1.Color:=clGreen;
    end;

  if odd(ks[VK_INSERT]) then
    Begin
    Panel2.Caption:='插入键按下';
    Panel2.Color:=clSkyBlue;
    end
  else
    Begin
    Panel2.Caption:='插入键松开';
    Panel2.Color:=clGreen;
    end;

  if odd(ks[VK_CAPITAL]) then
    Begin
    Panel3.Caption:='字母键按下';
    Panel3.Color:=clSkyBlue;
    end
  else
    Begin
    Panel3.Caption:='字母键松开' ;
    Panel3.Color:=clGreen;
    end;

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Timer1.Enabled:=True;  //监视开始
end;

procedure TForm1.Button2Click(Sender: TObject);
begin                 //调用两次才行
keybd_event( VK_CAPITAL,0,KEYEVENTF_EXTENDEDKEY or 0,0); //按下
keybd_event( VK_CAPITAL,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); //松开
{
procedure keybd_event(bVk: Byte; bScan: Byte; dwFlags, dwExtraInfo: DWORD); stdcall;
bVk:指定的虚拟键,在1-254之间的值,也可以是具体的键值;
bScan:为虚拟键指定一个硬件扫描码。
dwFlags:不同操作的标志,可以选择下面的参数:
KEYEVENTF_EXTENDEDKEY-扩展键,
KEYEVENTF_KEYUP-如果指定了,虚拟键就松开,否则虚拟键一直处于按下状态。
dwExtraInfo:为敲击键盘指定一个32位值; }

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Timer1.Enabled:=False;  //监视开始
end;

 //user32.dll中没有公开的一个函数
function BlockInput(fFreezeInput : boolean):DWord; stdcall; external 'user32.DLL';
procedure TForm1.Button4Click(Sender: TObject);
begin
 BlockInput(True);  //锁住键盘和鼠标,使两者无效
end;

procedure TForm1.Button6Click(Sender: TObject);
var kbtype:string;
begin
 Memo1.Clear;
 Case GetKeyBoardType(0) of
 //获取键盘类型
    1: kbtype:='IBM PC/XT或兼容类型(83键)键盘';
    2: kbtype:='Olivetti "ICO"(102键)键盘';
    3: kbtype:='IBM PC/AT(84键)键盘';
    4: kbtype:='IBM增强型(101或102键)键盘';
    5: kbtype:='Nokia 1050型键盘';
    6: kbtype:='Nokia 9140型键盘';
    7: kbtype:='日式键盘';
  end;
  memo1.Lines.Add('键盘类型:'+kbtype);
  //获取键盘功能键数目
 Memo1.Lines.Add('功能键数目:'+IntToStr(GetKeyBoardType(2)));
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -