首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 办公软件
以最少的资源耗用,显示系统键状态_delphi教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

  有不少人讨论过显示系统键(CapsLock、NumLock、Insert、ScrollLock等)状态的问题,用得最多的方法是添加一个Timer,在事件中刷新系统键状态显示;另一个方法是做一个系统HOOK,在HOOK中刷新显示。这两种方式都会严重占用系统资源,第一种方法还存在延迟的问题。现在介绍第三种方法:

  键盘按钮被按下时系统会发送WM_KEYDOWN、WM_CHAR、WM_KEYUP消息给当前的激活应用程序,消息的wParam是键盘扫描码,这样我们就可以知道按键是否被按下或释放,在这里面刷新按键状态显示是最佳的时候。不过这里还有一个问题,应用程序在非激活状态时是收不到以上消息的,因此需要在程序被激活时检测并刷新状态显示。

  下面给出实现代码:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
  private
    procedure AppActivate(Sender: TObject);
    procedure AppOnMsg(var Msg: tagMSG; var Handled: Boolean);
    procedure ShowKeyState; //显示系统按键状态

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
    //显示系统键状态,指定事件代理
    ShowKeyState;
    Application.OnMessage := AppOnMsg;
    Application.OnActivate := AppActivate;
end;

procedure TForm1.AppActivate(Sender: TObject);
begin
    ShowKeyState;   //应用程序被激活时刷新系统键状态
end;

procedure TForm1.ShowKeyState;
begin
    if (GetKeyState(145) and 1)<>0 then
        StatusBar1.Panels.Items[6].Text := SCOR
    else
        StatusBar1.Panels.Items[6].Text := ;
    if (GetKeyState(144) and 1)<>0 then
        StatusBar1.Panels.Items[5].Text := NUM
    else
        StatusBar1.Panels.Items[5].Text := ;
    if (GetKeyState(45) and 1)<>0 then
        StatusBar1.Panels.Items[4].Text := 插入
    else
        StatusBar1.Panels.Items[4].Text := 覆盖;
    if (GetKeyState(20) and 1)<>0 then
        StatusBar1.Panels.Items[3].Text := 大写
    else
        StatusBar1.Panels.Items[3].Text := 小写;
end;

procedure TForm1.AppOnMsg(var Msg: tagMSG; var Handled: Boolean);
begin
    if Msg.message = 256 then begin //WM_KEYDOWN
        case Msg.wParam of  //根据按键切换显示
            145:  //Scorll
                if (GetKeyState(145) and 1)<>0 then
                    StatusBar1.Panels.Items[6].Text := SCOR
                else
                    StatusBar1.Panels.Items[6].Text := ;
            144:   //Num
                if (GetKeyState(144) and 1)<>0 then
                    StatusBar1.Panels.Items[5].Text := NUM
                else
                    StatusBar1.Panels.Items[5].Text := ;
            45:   //Ins
                if (GetKeyState(45) and 1)<>0 then
                    StatusBar1.Panels.Items[4].Text := 插入
                else
                    StatusBar1.Panels.Items[4].Text := 覆盖;
            20:   //Caps
                if (GetKeyState(20) and 1)<>0 then
                    StatusBar1.Panels.Items[3].Text := 大写
                else
                    StatusBar1.Panels.Items[3].Text := 小写;
        end;
    end;

    Handled := false;   //让系统继续处理消息
end;

end.


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP.NET2.0连接SQL Server数据库详解-.NET教程,Asp.Net开发
·在.net中轻松掌握Windows窗体间的数据交互-.NET教程,.NET Framework
·Java中的类反射机制-JSP教程,Java技巧及代码
·小技巧让pdf文件与word文档之间自由地转换
·j2ee程序员应该掌握的linux知识-JSP教程,J2EE/EJB/服务器
·通过WMI获得硬盘和CPU的物理序列号(VB.net)-.NET教程,VB.Net语言
·firfox浏览器开发人公开firfox2.0开发计划
·VB.net入门(10):补充:类~属性-.NET教程,VB.Net语言
·office2003实战秘笈之excel轻松制胜招
·C#编码规范.doc-.NET教程,C#语言
最新文章
·天涯试水网络口碑营销 邢明:希望与"关键词"媲美_站长访谈
·美梨网站长冰寒的商务之道_站长访谈
·白手起家 新网站流量快速提高之道_站长心得
·照片处理 photoshop简单制作照片柔光效果_photoshop教程
·网络百戒 ---网页外观_站长心得
·utf-8转换gb2312编码,解决统计google搜索来源关键字乱_google推广
·googleadsense作弊不是技术的较量_google推广
·google改进搜索服务 企业可在local更新资料_google推广
·rss订阅对你的网站搜索表现有好处吗?_站长心得
·15种简洁有效的网站推广方法_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭