Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Battery Down

Battery Down 是一个不常驻后台的 Windows 电池使用提醒工具。

它通过 Windows 任务计划程序监听电源来源变化。拔出电源达到设定时间后,系统通知开始动态倒数;选择“继续使用”会取消关机计划,选择“立即关机”会立刻关机,无操作则在倒数结束时自动关机。重新接通电源也会取消现有通知和关机计划。

开发运行

dotnet run

在设置窗口中选择拔电后的等待秒数,然后点击“保存并启用”。设置为 0 秒时,拔出电源后立即显示提醒。“测试通知”可以在不拔出电源的情况下检查通知显示和按钮交互。

启用与任务计划

不需要手动打开 Windows“任务计划程序”进行配置,也不需要额外运行 BAT 脚本。点击“保存并启用”后,Battery Down 会以当前用户身份自动完成以下操作:

  • 注册拔出电源事件任务,并应用设置的等待秒数;设置为 0 时立即提醒;
  • 注册重新接通电源事件任务,用于取消通知和待执行的关机;
  • 注册通知按钮使用的应用协议;
  • 创建开始菜单快捷方式,使 Windows 能识别通知来源。

点击“停用”会删除上述任务、当前通知和尚未执行的一次性关机计划。普通提醒任务不需要管理员权限。

锁屏行为

程序会在提醒启动前以及倒计时过程中检测 Windows 会话是否锁定:

  • 未锁屏:显示系统通知并按设置动态倒数;
  • 已锁屏且“锁屏时拔电立即关机”已开启:由专用的 SYSTEM 电源事件任务立即关机;
  • 已锁屏且该选项关闭:不启动关机倒计时,等用户解锁后,如果电脑仍在使用电池,再立即显示提醒。

解锁检测由 Windows 任务计划程序的会话解锁触发器完成,不需要 Battery Down 常驻后台。该选项默认关闭,升级旧版本不会改变原有的安全策略。

Windows 在锁屏时不会立即运行普通的交互式用户任务。因此,开启“锁屏时拔电立即关机”时,程序会请求一次 UAC 管理员授权,用于安装由 SYSTEM 运行的专用拔电检查任务。关闭该选项或停用程序时,如果该系统任务已经存在,也会请求授权将其删除。若取消 UAC,设置窗口会显示“锁屏关机任务未安装”。

任务计划程序会记录 Battery Down 可执行文件的绝对路径。因此,启用前应先把单文件版本放到不会移动的固定目录,例如:

%LOCALAPPDATA%\Programs\BatteryDown\BatteryDown.exe

如果启用后移动了 EXE,需要从新位置再次点击“保存并启用”,让程序更新任务和快捷方式。当前版本不会自动把自身复制到固定安装目录。

构建

dotnet build -c Release

发布无需预装 .NET 的 Windows x64 单文件版本:

dotnet publish -p:PublishProfile=SingleFile

发布结果位于 artifacts\release\win-x64\BatteryDown.exe

程序目前使用 Microsoft-Windows-Kernel-Power 事件 ID 105 的 AcOnline 字段区分拔电与插电。某些厂商设备可能不会记录该事件,需要根据目标电脑的事件日志调整订阅条件。

许可证

本项目采用 GNU Lesser General Public License(LGPL)协议进行开源

About

使用C#编写的 笔记本拔出电源适配器提示自动关机程序

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages