在桌面上显示笔记本电脑的电池容量

最近我用笔记本发现电池容量的notifyicon经常不会正常出现(虽然设置了始终显示),并且我以前在PDA软件上写过显示电池容量的功能,所以可以写一个在桌面上显示电量的轻量级程序。查询电量主要通过API函数GetSystemPowerStatus来实现,这里不讲这个API函数(可参阅在api文档中有详细介绍)。
        [DllImport(KERNEL32)]
        public static extern bool GetSystemPowerStatus(
            ref SYSTEM_POWER_STATUS pSystemPowerStatus
            );

最初我用一个progressbar和一个label分别显示,这样做非常简单。但是progressbar的style属性是否不起作用,无法显示成连续样式,而是始终用绿色的小方块显示进度(XP系统),这样的显示不是很精确,所以决定自己绘制。同时把label也省略掉,直接在进度条上绘制百分比。所以这就引出下面的绘制问题,如何使绘制文本始终可见,采用下面的方法,下图:
          

          放大为800%的效果图:

          
          我们把窗口放置在这样的位置,当一个窗口最大化时,它贴近标题栏右侧,但不会遮挡controlbuttons。(如上图)
这需要获取显示器尺寸,在vc中是使用GetSystemMatrix函数,在c#中可以使用Screen.PrimaryScreen.Bounds属性。
上图中字符串被切分为两个部分,因此我们在绘制时先准备两个图片,bitmap1和2,分别采用不同的前景和背景,当进度条处于文字中间位置时,我们贴两次图。
百分比字符串的尺寸可以测量:
sizef=graphics.measurestring(text,font)
绘制字符串的起始位置(居中):
startX=(this.width-sizef.width)/2;
startY=(this.height-sizef.height)/2;

注意,贴图时,一定要使用整数坐标,而不使用float坐标,否则会产生图像的插值计算而导致模糊。

因为这是窗口程序,因此大多数情况下应该是一个对鼠标消息“透明”的窗口,即鼠标穿透功能,由于程序很小,因此我们不设置单独选项来控制。这个功能是通过API函数设置窗口样式实现的,代码如下:
    //设置为鼠标穿透
    SetWindowLong(this.Handle, GWL_EXSTYLE,
                 GetWindowLong(this.Handle,GWL_EXSTYLE)| WS_EX_TRANSPARENT | WS_EX_LAYERED);

未来需要添加的功能包括:允许移动(由于无标题栏,所以需要一些处理windows消息的技巧)。

源代码:
         http://files.cnblogs.com/hoodlum1980/PowerStatus.rar

附录:维护历史
2008.01.16:增加了通知栏多图标切换,充电提示,电量低于25%时通知栏图标闪烁。
2008.01.18:鼠标穿透功能。
2008.01.22:修正了立即刷新电量时,界面未能更新的BUG。
2008.01.24:增加两个Tray图标,使通知托盘区的图标选择(根据实际剩余电量)更加合理。
2008.12.16:增加了交流电源在线时的图标,并绘制了更符合电池外观的轮廓。

时间: 2024-10-26 00:33:47

在桌面上显示笔记本电脑的电池容量的相关文章

Windows8中如何在桌面上显示“计算机”图标

  1.登陆 Windows 8 Metro 界面,单击左下角桌面图标,如下图: 计算机"图标-windows8计算机图标"> 2.如果用户第一次部署完 Windows 8 系统,进入桌面无计算机图标,如下图: 3.在桌面空白处点击右键,选择个性化,如下图: 4.进入个性化窗口,选择左上角:更改桌面图标,如下图: 5.进入更改桌面图标窗口,勾选桌面图标下的"计算机"复选框(如果需要在桌面上显示控制面板.网络等图标,勾选相应复选框),如下图: 6.选择"

Win7旗舰版如何在桌面上显示天气?

有的用户看到别人的Win7系统桌面上还能显示天气,非常新奇,其实这只是微软在win7系统中给大家内置的功能,只是平常我们都很少使用罢了,不过在桌面上显示天气确实是不错的选择,关注天气好正确安排我们的行程,穿衣等,那么如何操作呢?来看看是怎么添加天气显示在桌面上的吧. 1.在桌面上右击鼠标,选择"小工具"选项; 2.打开小工具后,我们就可以在其中看到"天气组件"了. 3.双击天气图标.,这时我们就把天气图标固定在了桌面上.很简单吧. 4.我们还可以右击天气图标,进行设

Windows Server 2012 R2在桌面上显示计算机/网络图标

原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: 1.同时按住键盘上的"Windows键"+"R",调出运行窗口.在运行窗口输入 "rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0"确定.(注意大小写) 2.在弹出的桌面个性化窗口选择需要在桌面

取消linux挂载磁盘不在桌面上显示

取消linux挂载磁盘不在桌面上显示         我们每次新装完redhat Linux系统,如果有手动添加的分区,在登陆系统后,桌面上往往都会有自定义添加的盘符显示,而且不能删除,删除就unmount,而我们通常不希望是这样的,这个时候我们必须借助一个包gonf-editor来实现手工管理桌面上显示的内容.这个包在redhat linux光盘Server/目录中存在,我们通过rpm来安装即可. 配置步骤如下:1.安装gonf-editor [root@localhost /]# cd /m

在桌面上显示“我的电脑”“网上邻居”等图标

1. 点击 开始 在搜索中输入 icon 2. 点击"显示或隐藏桌面上的通用图标" 电脑常识 3. 选中要在桌面显示的图标,点击确定,桌面会出现相应的图标.

怎么让U盘图标在win7桌面上显示

  1.最简单的方法就是,插入U盘,然后鼠标右击U盘盘符选择"创建快捷方式",然后在弹出来的是否创建快捷到桌面的时候,点击是即可,这方法在你拔了U盘之后,桌面上的图标就是一个空的,是点击不进去的,只有等你插入U盘后才可以进去哦. 2.鼠标右击任务栏选择属性,在打开的属性界面中,切换到"任务栏"选项卡,然后点击通知区域的"自定义"按钮,然后找到你那个U盘,然后选择"显示"即可. 3.使用第三方工具,现在很多杀毒软件有这样的功能,

笔记本电脑的电池容量

  有大容量电池才有长续航,不过怎么看笔记本电池容量呢?不少人会看电池有多少mAh,这放在平板.手机中也许不会有太大的错误,毕竟,平板.手机大多采用单电池或是电池串联,而笔记本的的电池往往使用电芯的串联,而在电池的串联中,又有两串,三串甚至是四串联方式,这样就导致电池电压各不相同,虽然其放电电流一样,但电池容量却有较大区别. 笔记本电池容量=电池电压×电流容量 因此,看电池容量,要看电池电压×电流容量的乘积,即WH(瓦时).实际上,现在不少笔记本电池已经在使用这个单位来描述电池容量,如果没写,那

360天气怎么设置在桌面上显示

  1.首先在手机上直接打开360天气软件 2.进入360天气主界面后,点击[右上角的菜单--选择--设置] 3.进入设置页面后,继续点击[天气小工具] 4.进入天气小工具页面后,找到喜欢的样式点击[下载] 5.然后返回桌面,[呼出菜单选项]接着选择[添加小部件] 6.进入选项页面后,点击[系统小部件] 7.弹出选择小部件后,点击[选择刚刚下载的360天气] 8.返回手机即可在桌面看到已经安装好的天气信息,同时可按住模块来随意拖动天气预报的显示位置

修改注册表实现在桌面上显示Windows版本_注册表

首先运行注册表编辑器 在开始-运行中-输入-regedit,然后打开已有的或新建下列操作子键,并根据下表编辑其相应键值项(如果不存在请新建此项) 在注册表中找到: 操作子键HKEY_CURRENT_USER\Control Panel\desktop 键值项(数据类型) :PaintDesktopVersion(DWord值) 键值:0(不显示Windows的版本号);1(显示Windows的版本号) (备注)把这项改成1,注销或重起系统以后,就可以在桌面又下角显示你的Windows版本号了.