当前位置:  开发笔记 > 小程序 > 正文

当我的应用程序没有焦点时,如何捕获键盘状态?

如何解决《当我的应用程序没有焦点时,如何捕获键盘状态?》经验,为你挑选了1个好方法。

我女朋友的新笔记本没有NumLock和CapsLock的指示灯,所以我写了一个小程序,在屏幕上显示它们的状态:

procedure TForm1.Timer1Timer(Sender: TObject);  
var  
  KeyState: TKeyboardState;  
begin  
  GetKeyboardState(KeyState);  
  if KeyState[VK_NUMLOCK] = 0 then  
    PanelNumLock.Color := clSilver  
  else  
    PanelNumLock.Color := clLime;  
  if KeyState[VK_CAPITAL] = 0 then  
    PanelCapsLock.Color := clSilver  
  else  
    PanelCapsLock.Color := clLime;  
end;

在此输入图像描述

只要我的程序具有焦点,这就可以工作,但是当焦点转到另一个程序时,状态将不再更新.(但是,只需将鼠标移到表单上,不进行单击就足以进行更新.)

当另一个应用程序有焦点时,如何让程序更新?



1> kobik..:

您只需GetKeyState在您的计时器中使用即可.

if GetKeyState(VK_NUMLOCK) = 1 then
  PanelNumLock.Color := clLime
else
  PanelNumLock.Color := clSilver;

if GetKeyState(VK_CAPITAL) = 1 then
  PanelCapsLock.Color := clLime
else
  PanelCapsLock.Color := clSilver;

即使您的应用程序没有焦点,这也适用.在XP上测试过.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有