当 Windows 7 插入或拔出电源时触发任务和运行程序?

当 Windows 7 插入或拔出电源时触发任务和运行程序?

可能重复:
有没有办法在电源事件发生时执行程序?

是否有 Windows 活动我可以在任务计划程序中看到当电源插入时触发的事件吗?当电源拔出时又会触发什么事件?

我想在使用电池供电时启动和停止 CrashPlan。(这一直是2.5 年前的功能请求在 CrashPlan 中,老实说,我迫不及待地想让他们添加它。)

其他人之前也问过如何禁用超级获取搜索索引电池供电。我认为这个技巧也能解决这些问题。

有这样的 Windows 事件吗?如果没有,是否可以安装一个程序来检测电源变化,然后我可以为其创建任务计划程序触发器。

答案1

默认情况下,当您拔下或插入计算机时,Windows 不会记录事件。

但是,使用 PowerShell,您可以监听此类更改并将自己的事件写入日志。此脚本将执行此操作:

New-EventLog -Source BatteryStatusMonitor -LogName Application

Function OnBatteryStatusChange ($NewStatus) {
  If ($NewStatus -eq 1) {
    $EventID = 5001
    $Message = "The computer was unplugged."
  } ElseIf ($NewStatus -eq 2) {
    $EventID = 5002
    $Message = "The computer was plugged in."
  } Else {
    $EventID = 5000
    $Message = "Battery status changed to $NewStatus"
  }
  Write-EventLog -LogName Application -Source BatteryStatusMonitor -EventID $EventID -Message $Message
}

$Query = "select * from __instancemodificationevent within 3 where targetinstance isa 'win32_battery' and targetinstance.batterystatus <> previousinstance.batterystatus"

Register-WmiEvent -Query $Query -Action {OnBatteryStatusChange $Event.SourceEventArgs.NewEvent.TargetInstance.BatteryStatus} -SourceIdentifier "BatteryStatusChange"

For (;;) {}

答案2

如果您只对支持 Windows Vista 及更高版本感兴趣,注册参加电力活动

使用注册电源设置通知与 GUID_ACDC_POWER_SOURCE 值。

相关内容