เรียกใช้งานและเรียกใช้โปรแกรมเมื่อ Windows 7 เสียบหรือถอดปลั๊ก? [ซ้ำ]


4

ซ้ำเป็นไปได้:
มีวิธีดำเนินการโปรแกรมสำหรับเหตุการณ์พลังงานหรือไม่

มีเหตุการณ์ Windowsที่ฉันสามารถดูใน Task Scheduler ที่จะทริกเกอร์เมื่อเสียบปลั๊กไฟอยู่หรือไม่ และเหตุการณ์เมื่อถอดปลั๊กไฟ?

ฉันต้องการเริ่มและหยุด CrashPlan ในขณะที่ใช้พลังงานแบตเตอรี่ (นี่เป็นคุณสมบัติคำขอ 2.5 ปีใน CrashPlan และโดยสุจริตฉันไม่สามารถรอให้เพิ่มได้)

คนอื่น ๆ ได้ถามก่อนหน้านี้ว่าจะปิดการใช้งานSuperFetchและดัชนีการค้นหาด้วยพลังงานแบตเตอรี่ได้อย่างไร ฉันคิดว่าเคล็ดลับนี้จะแก้ไขคำถามเหล่านี้ด้วย

มีเหตุการณ์หน้าต่างเช่นนี้หรือไม่? หากไม่มีอาจมีโปรแกรมที่ฉันสามารถติดตั้งที่ตรวจจับการเปลี่ยนแปลงพลังงานซึ่งฉันสามารถสร้างทริกเกอร์ Task Scheduler ได้

คำตอบ:


4

โดยค่าเริ่มต้น 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 (;;) {}

0

หากคุณมีความสนใจเฉพาะในการสนับสนุน Windows Vista และข้างต้นลงทะเบียนสำหรับเหตุการณ์พลังงาน

ใช้RegisterPowerSettingNotificationด้วยค่า GUID_ACDC_POWER_SOURCE


หาก OP เหตุการณ์เดียวที่ต้องการจับภาพคือการเปลี่ยนแปลงสถานะของเครื่องชาร์จ AC ผ่าน Win32 API เขาสามารถจัดการข้อความ PBT_APMPOWERSTATUSCHANGE เพียงผ่านทางรหัสควบคุม SERVICE_CONTROL_POWEREVENT ในการเรียกกลับ HandSEx ไปยัง RegisterServiceCtrlHandlerEx Windows XP นี้ควรได้รับการสนับสนุนและใหม่กว่า อย่างไรก็ตามเขาขอ Windows Event
เควินจิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.