📄 unit1.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 + -