スリープ解除時起動

今回のテーマ: 他アプリケーション起動、Popup

ここのサイトのスクリプトは、定期的に実行しないと効果がないものがあります。

定期実行にはタスクマネージャーやスタートアップなどを利用することが多いと思います。特にPC起動時に実行したいスクリプトやアプリケーションは、スタートアップを利用することになると思います。

スタートアップは、スタートメニューの「スタートアップ」フォルダに登録したアプリケーションなどを、PCの起動時に自動的に実行する機能です。

毎日のパソコン使用終了時に電源を切っている場合は、スタートアップはPC起動時に確実にアプリケーションを起動する方法として非常に便利です。

ですが、ウィンドウズには電源の切り方として、休止状態やサスペンドといった方法もあります。

これを利用すると、次回PC利用時に前回終了時の状態から復帰することができます。ウィンドウズ起動の長い待ち時間を省略し、起動したときには前回起動していたアプリケーションでそのまま作業が続けられるといった利点があるので、こちらを利用している方も多数いると思います。

ノートパソコンでは一般的ですが、デスクトップパソコンでも利用できる機能です。

非常に便利なのですが、この場合、次回PC起動時は以前の状態に復帰するため、スタートアップに登録されたアプリケーションは実行されません。

ですが、このサイトにある「最近使ったファイルお掃除スクリプト」などは、サスペンドからの復帰でも起動するようにしたいところです。スタートアップに登録したのでは、次回の実行がいつになるかもわかりません。

そこで、休止状態やサスペンドからの復帰時に、スクリプトやアプリケーションを実行するためのスクリプトを作ってみました。

スリープ解除時起動スクリプトダウンロード


プログラムコードの表示

(プログラムコードがここに表示されます)

スクリプトの冒頭、「ここに実行するアプリケーションを指定」となっている部分に

Run "(アプリケーションのフルパス)"

の形式で、実行するアプリケーションやファイルを指定します。起動したいアプリケーションが複数ある場合、1つに付き1行でRunを記述してください。

データファイルを指定した場合、関連付けられたアプリケーションが起動してファイルが読み込まれます。

このスクリプトは、実行しても直ちにはなんの反応もありませんが、反応がないからといって何度も実行しないでください。

このスクリプトを実行しておくと、サスペンドなどから復帰したときに、タスクの実行を行うかの問い合わせがあります。この問い合わせを一定時間放置するか、「はい」を選択するとタスクの実行が始まります。

タスク実行の問い合わせに「いいえ」を選択すると、タスクは実行されず、また待機状態になります。

ここで「キャンセル」を選択すると、スリープ解除時起動スクリプトは終了します。サスペンドなどの復帰時も何も行わなくなります。

このスクリプト自体をスタートアップに登録して、休止状態などの監視を自動で行うようにすればいいと思います。


ここで、タスク実行時に確認なんていらない、という方もいらっしゃると思います。

「最近使ったファイル」の履歴を人に見られたくないのでPC起動時に即座に消したい、などの場合は、確認はない方が望ましいと思います。

ここに、確認を行わずに即座にタスクを実行するバージョンも掲載しておきます。

スリープ解除時起動スクリプト(確認なしバージョン)ダウンロード

(プログラムコードがここに表示されます)

ただしこちらのバージョンは、当然ながら実行すると停止する方法も提供していません。

このスクリプトを停止したい場合、やや強引ですが、ウィンドウズの「タスクマネージャー」で、「プロセス」の中から"wscript.exe"というプロセスを探し、それを終了することで停止します。

他にバックグラウンドで動作しているスクリプトがある場合、それを見分ける方法がないのは欠点ですが・・。


余談ですが、このスクリプトは別に休止状態やサスペンドを監視しているわけではありません。

10秒に1回時計を確認して、さっきから10秒以上たっている場合、その間はPCが動作していない→休止状態かサスペンド状態だった、という判断を行っています。

実際にはマージンを取って、10秒のところが15秒たっていたらタスク起動、という動作をしています。

やや原始的ですが、休止状態などからの復帰をウィンドウズから通知されるのを監視するより確実だと思います。

できれば、タスクバーの通知領域(俗に言うタスクトレイ)にアイコンを登録して、そこから終了とかができればもっとスマートだとは思いますが、そこまでやるのならスクリプトじゃなく、アプリケーションを組むことになるのでやめておきます。