[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

(20元)如何检测笔记当前接通的是交流电还是电池

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

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

本帖最后由 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. 笔记本,接通外接电源中
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

对于易停电地区,在第二个返回值前加个主板响,及时提醒更好些。
目的,学习批处理

TOP

优化
  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
1

评分人数

    • ivor: 方法很多,起初感觉最快的还是自己编译。别 ...技术 + 1
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 6# 电动小马达


    倒计时的功能2楼已经更新
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 4# ivor


    测试完成,功能正常,邮件回复你了

TOP

回复 4# ivor


    感谢,但是这边仅仅显示电源是否接通,拔掉电源没有倒计时,再接回电源没有关于倒计时终止的显示,不知道这个功能没有添加还是仅仅没有显示

TOP

回复 4# ivor


    谢谢,但是我现在在巴基斯坦,不能上百度云,麻烦发到我邮箱吧,1181788708@qq.com

TOP

回复 3# 电动小马达


   链接:https://pan.baidu.com/s/1qXO00o8 密码:6vp2
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 2# ivor


    附件没看见,大佬

TOP

用到了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
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

返回列表