首页  编辑  

如何判断一个按键序列

Tags: /超级猛料/Hardware.硬件相关/键盘和鼠标/   Date Created:

判断按键序列

Copyright(C) 2003, Kingron

如何判断用户输入的一个序列是不是指一个指定的序列?例如如何监测用户输入了kingron这个序列?

可以采用下面的方法:

定义一个数组:

var

 CharBuf:array [1..7] of char;

然后在窗体的OnKeyPress中添加如下代码即可:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

var

 i:integer;

begin

 for i:=Low(Buf) to High(buf)-1 do

   CharBuf[i]:=Charbuf[i+1];

 CharBuf[High(Buf)]:=Key;

 if CharBuf='kingron' then ShowMessage('OK!');

end;

如果要检测带功能键的,则可以利用ShortCut来做:

use Menus;

var

   CharBuf:array [1..7] of Word;

const

 /// ALT + KINGRON

 Keys : array[1..7] of Word=(32843, 32841, 32846, 32839, 32850, 32847, 32846);

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;

 Shift: TShiftState);

var

 i:integer;

begin

 for i:=Low(CharBuf) to High(Charbuf)-1 do

   CharBuf[i]:=Charbuf[i+1];

 CharBuf[High(CharBuf)]:=ShortCut(Key, Shift);

 if CompareMem(@CharBuf[1], @Keys[1], SizeOf(Keys)) then ShowMessage('OK!');

end;