找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19926|回复: 10

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

  [复制链接]
发表于 2017-11-29 01:25:44 | 显示全部楼层 |阅读模式
本帖最后由 电动小马达 于 2017-11-29 12:56 编辑

检测笔记本供电是交流电还是电池
如果是交流电,无操作
如果是电池,倒计时10分钟,之后进入休眠模式。
在这10分钟内如果恢复了交流电,那么取消倒计时,重新检测是交流电还是电池。
发表于 2017-11-29 11:42:59 | 显示全部楼层
用到了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:13 | 显示全部楼层
回复 2# ivor


    附件没看见,大佬
发表于 2017-11-29 13:21:37 | 显示全部楼层
回复 3# 电动小马达


   链接:https://pan.baidu.com/s/1qXO00o8 密码:6vp2
 楼主| 发表于 2017-11-29 13:26:44 | 显示全部楼层
回复 4# ivor


    谢谢,但是我现在在巴基斯坦,不能上百度云,麻烦发到我邮箱吧,1181788708@qq.com
 楼主| 发表于 2017-11-29 13:39:29 | 显示全部楼层
回复 4# ivor


    感谢,但是这边仅仅显示电源是否接通,拔掉电源没有倒计时,再接回电源没有关于倒计时终止的显示,不知道这个功能没有添加还是仅仅没有显示
 楼主| 发表于 2017-11-29 13:42:42 | 显示全部楼层
回复 4# ivor


    测试完成,功能正常,邮件回复你了
发表于 2017-11-29 13:59:46 | 显示全部楼层
回复 6# 电动小马达


    倒计时的功能2楼已经更新
发表于 2017-11-29 17:37:36 | 显示全部楼层
优化
  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技术 +1 收起 理由
ivor + 1 方法很多,起初感觉最快的还是自己编译。别 ...

查看全部评分

发表于 2017-11-29 18:20:48 | 显示全部楼层
对于易停电地区,在第二个返回值前加个主板响,及时提醒更好些。
发表于 2017-12-1 20:06:11 | 显示全部楼层
本帖最后由 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. 笔记本,接通外接电源中
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:42 , Processed in 0.013135 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表