概要
Windows 11 Home でスリープ復帰時にプログラムを実行する代わりに、アンロック時のプログラム実行を設定しました
トリガー問題
Windows でスリープ復帰時にコマンドを実行するには、タスクスケジューラを使う方法があります。
トリガーとしては以下のイベントが知られています。
- タスクの開始: イベント時
- ログ: システム
- ソース: Power-Troubleshooter または Microsoft-Windows-Power-Troubleshooter
- イベント ID: 1
しかし Windows 11 Home の場合、Power-Troubleshooter が標準では使えません。そもそも deprecated だという話もあります。
ほかに以下のイベントが使えるという説もあります。実際イベントビューアを見ると来てはいるようですが、タスクスケジューラでうまく取れませんでした。
- ソース: Kernel-Power
- イベント ID: 566
代替案
スリープ復帰時にアンロックする設定なら、アンロックをトリガーにできます。
- タスクの開始: ワークステーション アンロック時
スリープせずにロックだけかかった場合にも実行されて問題なければ、これで代替できます。
今回の使い道
WSLg で、setxkbmap で設定したレイアウトがスリープ復帰時に書き換わってしまうという問題の回避に使いました。以下を入れたバッチファイルを実行しています。
start /min wsl.exe -u hideki /usr/bin/setxkbmap us
すぐ実行するとうまく動かないようなので、「遅延時間を指定する」で最小の30秒間を指定しています。