Board logo

标题: (20元)如何检测笔记当前接通的是交流电还是电池 [打印本页]

作者: 电动小马达    时间: 2017-11-29 01:25     标题: (20元)如何检测笔记当前接通的是交流电还是电池

本帖最后由 电动小马达 于 2017-11-29 12:56 编辑

检测笔记本供电是交流电还是电池
如果是交流电,无操作
如果是电池,倒计时10分钟,之后进入休眠模式。
在这10分钟内如果恢复了交流电,那么取消倒计时,重新检测是交流电还是电池。
作者: ivor    时间: 2017-11-29 11:42

用到了winAPI所以有附件
文件列表:↓
程序返回值类型: {0:电源断电; 1:电源正常; 255:电源状态未知}
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. rem 根据返回值判断是否接电,1为接电,0为未接电
  3. :s
  4. ping 127.1 -n 2 >nul
  5. ACLineStatus
  6. echo 返回值:!errorlevel! 已接通电源
  7. if %errorlevel% equ 1 goto :s
  8. for /l %%a in (1,1,600) do (
  9. ping 127.1 -n 2 >nul
  10. ACLineStatus
  11. if !errorlevel! equ 1 goto :s
  12. cls
  13. echo 返回值:!errorlevel!  未接电源
  14. set /p a=倒计时:<nul
  15. set /a t=600-%%a
  16. echo !t!
  17. )
  18. rem 休眠
  19. rundll32.exe powrProf.dll,SetSuspendState
复制代码

作者: 电动小马达    时间: 2017-11-29 13:20

回复 2# ivor


    附件没看见,大佬
作者: ivor    时间: 2017-11-29 13:21

回复 3# 电动小马达


   链接:https://pan.baidu.com/s/1qXO00o8 密码:6vp2
作者: 电动小马达    时间: 2017-11-29 13:26

回复 4# ivor


    谢谢,但是我现在在巴基斯坦,不能上百度云,麻烦发到我邮箱吧,1181788708@qq.com
作者: 电动小马达    时间: 2017-11-29 13:39

回复 4# ivor


    感谢,但是这边仅仅显示电源是否接通,拔掉电源没有倒计时,再接回电源没有关于倒计时终止的显示,不知道这个功能没有添加还是仅仅没有显示
作者: 电动小马达    时间: 2017-11-29 13:42

回复 4# ivor


    测试完成,功能正常,邮件回复你了
作者: ivor    时间: 2017-11-29 13:59

回复 6# 电动小马达


    倒计时的功能2楼已经更新
作者: codegay    时间: 2017-11-29 17:37

优化
  1. WMIC Path Win32_Battery Get BatteryStatus
复制代码
Check if computer is plugged into AC power in batch file

https://stackoverflow.com/questi ... power-in-batch-file
作者: hlzj88    时间: 2017-11-29 18:20

对于易停电地区,在第二个返回值前加个主板响,及时提醒更好些。
作者: codegay    时间: 2017-12-1 20:06

本帖最后由 codegay 于 2017-12-1 20:08 编辑

我也试着用nim写了一个
  1. type
  2.     SYSTEM_POWER_STATUS* {.final, pure.} = object
  3.         ACLineStatus*: int8
  4.         BatteryFlag*: int8
  5.         BatteryLifePercent*: int8
  6.         Reserved1*: int8
  7.         BatteryLifeTime*: int32
  8.         BatteryFullLifeTime*: int32
  9. var test:SYSTEM_POWER_STATUS
  10. proc getPowerStatus*(stat:var SYSTEM_POWER_STATUS):int {.stdcall, dynlib:"kernel32",
  11.     importc:"GetSystemPowerStatus", discardable.}
  12. test.getPowerStatus
  13. echo test
  14. echo "电池电量:",test.BatteryLifePercent
  15. if test.ACLineStatus == 0:
  16.     echo "笔记本,断电了"
  17. elif test.ACLineStatus == 1:
  18.     echo "笔记本,接通外接电源中"
  19. else:
  20.     echo "我觉得我可能是运行在一台台式电脑上了。"
复制代码
  1. 输出:
  2. (ACLineStatus: 1, BatteryFlag: 1, BatteryLifePercent: 99, Reserved1: 0, BatteryLifeTime: -1, BatteryFullLifeTime: -1)
  3. 电池电量:99
  4. 笔记本,接通外接电源中
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2