質問: 電源イベントでプログラムを実行する方法はありますか? 私は基本的に、ラップトップがバッテリー電源に移行したとき、および同様にacに戻ったときにアプリケーションを実行する方法を探しています。そのようなイベントに応答できるようにするwindowsまたはサードパーティアプリケーションの組み込みフックはありますか?[〜#〜]編集[〜#〜]「電源」イベントでタスクを起動しようとしているtaskschedulerを調べましたが、バッテリーに切り替えたときにイベントがログに記録されていないようです。
回答: このために実行できる簡単なコマンドはわかりませんが、スクリプトで実行できるはずです。 win32_powermanagementevent イベントを powershell または ( [〜#〜] wsh [〜#〜] 。 tomshardwareの記事にはいくつかのvbscriptコードが含まれていますが、イベントタイプ10(電源状態の変更)のケースが必要になると思います。 stackoverflowにはいくつかのアイデアがあります windowsがスリープモードまたは休止状態モードに入る/出るときを知るにはどうすればよいですか? ただし、拡張する必要がありますスリープ/休止状態の代わりに電源状態の変化を処理するというアイデア。質問のコードにいくつかのアイデアが見つかるかもしれません managementeventwatcherを使用してサスペンド/レジュームを追跡するにはどうすればよいですか? 編集:実際には、このようなことを試してください。これは完全に一緒にハッキングされているので、きれいではありません。 dcまたはac電源への変更が検出された場合は、echoステートメントを変更して必要な処理を実行します。cscript power.vbsで実行します。power.vbsdim battery_status, prev_status prev_status = checkbattery set colmonitoredevents = getobject("winmgmts:\\.\root\cimv2")._ execnotificationquery("select * from win32_powermanagementevent") do set strlatestevent = colmonitoredevents.nextevent if strlatestevent.eventtype = 10 then battery_status = checkbattery if battery_status <> prev_status then if battery_status = 1 then wscript.echo "dc power" elseif battery_status = 2 then wscript.echo "ac power" end if end if end if prev_status = battery_status loop function checkbattery dim owmi, items, item set owmi = getobject("winmgmts:\\.\root\cimv2") set items = owmi.execquery("select * from win32_battery",,48) for each item in items if item.batterystatus = 1 then checkbattery = 1 exit function elseif item.batterystatus = 2 then checkbattery = 2 exit function end if next end function