Delphi技巧点滴

http://tech.ddvip.com   2006年07月30日    社区交流

本文详细介绍Delphi技巧点滴

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

  Delphi可以调用Win API的Getkeyboardstate()函数。

  常量 按键名称

  VK_INSERT znsert键

  VK_NUMLOCK Num Lock键

  VK_CAPITAL Caps Lock键

  VK_SCROLL Scroll Lock键

  键盘缓冲区每一位都有一位特定的格式,对于状态键来说,最低位是1时表示状态键处于ON状态,你可以使用odd()函数来确定这一位的状态,以下是一个简单的例子请参考。例子中放置一个Timer控件、一个StatusBar状态条。

  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.

  2.屏蔽系统按键

  也许你希望程序在运行时不想让用户按系统按键 Alt-Tab 或 Ctrl-Alt-Del,那么可以通过以下的程序来屏蔽这些按键。  

  procedure TForm1.FormCreate(Sender: TObject);   var tmp,Flag :integer;
begin
  tmp := 0;
Flag := 1;
  //屏蔽 Alt-Tab
  SystemParametersInfo( SPI_SETFASTTA-SKSWITCH, Flag, @tmp, 0);
  //屏蔽 Ctrl-Alt-Del
  SystemParametersInfo( SPI_SCREENSAVERRU-NNING,Flag, @tmp, 0);  
end;
   当你要恢复功能键时用以下代码:
Flag := 0;
SystemParametersInfo(SPI_SCREENSAVERRU-NNING,Flag,@temp,0);

责编:豆豆技术应用

正在加载评论...