ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】タスクスケジューラから直接タスクを実行するときはキー送信失敗に注意

なんだかわからないけど動かない時があるシリーズ。

今回の現象は、Autohotkey スクリプトは実行できているのに、なぜか send コマンドのキー送信に失敗することです。
今回はきれいに小一時間治ったので書き残しておきます。


夜7時半になったら、 スピーカーを Bluetooth イヤホンに切り替えるキーボードショートカットを送信してブラウザを起動するだけのシンプルなスクリプトではまりました。
このスクリプトは、タスクスケジューラに登録されていて、時間になれば起動します。
その処理をテストするため、タスクスケジューラのメニューから直接タスクを起動します。


実行結果は、キー送信は行われずにブラウザだけ起動します。
原因は、タスクスケジューラがアクティブ(最前面)になっているから。


管理者権限で動かすようなアプリケーションが最前面になっている時、 send コマンドのキー送信は無視されるようです。
タスクスケジューラもキー送信できないタイプ。
確かに勝手にタスク実行されると怖いですからね。
キー送信に失敗するアプリは他にもタスクマネージャなどがあります。

解決法は簡単。

  • タスクスケジューラから直接起動しない。
  • キー送信の前に別のウィンドウをアクティブにする。


私は後者を選択。
必ず起動している Chrome のウインドウを最前面に切り替える処理をスクリプトの先頭に突っ込みました。
原因に気づくかどうかが最大の問題ですね。