在Wince5.0中实现关机功能
来源:互联网 发布:gta5修改金币数据 编辑:程序博客网 时间:2024/04/29 15:26
折磨了我们很久的不能关机问题终于在蟲子在带领下解决,今天发现的一个新的方法,不知道怎么样。
wince5.0带的电源管理驱动只实现了“休眠(SUSPEND)”功能,未实现“关机(SHUT_DOWN)”功能。调用函数 SetSystemPowerState()时,无论参数是POWRE_STATE_OFF还是POWRE_STATE_SUSPEND,最终均为 SUSPEND。如果需要关机,还需要其他的办法。
我看过有人专门写了一个PowerKey的驱动,用来实现关机。但是这种方法的问题在于,关机时系统不会通知应用程序,往往需要自己设计一套消息由PowerKey驱动来通知应用程序,在很多时候非常的不方便。
我使用的方法是利用Wince自身的电源管理驱动,与系统结合的比较紧密
1.建立新的PM PDD(platform.cpp),系统自带的PDD在WINCE500/PUBLIC/COMMON/OAK/DRIVERS/PM/PDD目录,可以选取一个作为修改的模板.同时,修改电源管理的SOURCE文件,使用新的PDD。
2.PlatformMapPowerStateHint()函数负责把电源状态标记映射为电源状态的名称,在此函数中做如下修改:
把POWER_STATE_OFF映射为shutdown而不是suspend
3. PlatformSetSystemPowerState()函数负责设置电源的状态,函数中有这么一句
if((dwNewStateFlags & POWER_STATE_RESET) != 0)
这一句监测是否用户准备RESET系统,并在后面做相应的RESET动作。
在此之前,增加if((dwNewStateFlags & POWER_STATE_OFF) != 0){关机代码}
4.在注册表文件中增加
; wwwwww, the following key is added to impliment the shut down function(not suspend)
; the application should deal with the POWER_BROADCAST(to POWER_STATE_OFF)
[HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Control"Power"State"ShutDown]
"Default"=dword:4 ; D4
"Flags"=dword:20000 ; POWER_STATE_OFF
5.修改到此完成,关机时调用 SetSystemPowerState即可,StateFlags参数设为POWER_STATE_OFF。关机时,系统会向应用程序发送POWER_BROADCAST(to POWER_STATE_OFF)消息
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能
- 在Wince5.0中实现关机功能 ——转载
- 在Wince5.0中实现关机功能【转】
- 通过修改电源管理驱动,实现WinCE5.0关机功能
- wince5.0中实现multi-XIP功能
- 如何在应用程序中实现关机功能
- WINCE5.0软关机
- 在WINCE5.0开始菜单中添加应用程序
- android中实现关机功能出错
- Wince5.0来电防火墙实现回复对方是空号或者已经关机
- 在android App中怎样实现对设备重启或者关机功能
- 用VC6.0实现定时关机功能
- DIV标签中列表的获取方法
- Linux驱动的配置和编译脚本
- 深入浅出MFC笔记
- zk中用jxls导出excel
- 驱动IC
- 在Wince5.0中实现关机功能
- 读Excel文件
- linux 文件描述符
- 不能说话!
- updateprogress 实现层遮罩效果
- 一个javascript日历,兼容多种浏览器
- TOMCAT虚拟主机配置
- 做人做事是一门艺术,更是一门学问[
- C/C++语言中各种数据类型长度的总结