スケジュール(タスク)を登録する


Windowsにはタスクという機能があります。指定した時間に、指定したプログラムなどを自動的に実行させる機能です。コントロールパネルの[タスク]アイコンを開くと、新しいタスクを登録できたり、すでに登録されているタスクを確認することができます。

このタスクを、VBやVBAから登録できたら便利だろうなぁ・・・とは、けっこう昔から考えていました。いえ、もちろん可能です。ちょっと調べれば、NetScheduleJobAdd などという API を使えばタスクを操作できることがわかります。ただ、面倒くさいです(^^;

で、先日ナニゲにMS-DOSコマンドを見ていたら、あるじゃないですか。at コマンドが。

at コマンドで登録したプログラムはバックグラウンドで実行されます。ですから、たとえば「12:00に電卓を起動したい」ということで

at 12:00 calc.exe

と登録してもダメです。12:00に電卓が起動しますけど、バックグラウンドですから表示されません。一般的なアプリケーションのように表示して、そのプログラムを操作したいときは、次のように引数 /interactive を指定します。

at 12:00 /interactive calc.exe

詳しくは、at /? してください。

凝ったことをしなければ、これで十分ですね。

何なら「MS-DOSコマンドの標準出力を取得する」と併用すれば、対話的なUIを作成することもできますし。

at 12:00 /interactive c:\sample.txt

のように、実行形式ファイルではなく、データファイルを指定できるのも便利です。

ただ、データファイルを開くアプリケーションに関しては、少し疑問が残ります。私は、拡張子txtのテキストファイルを秀丸エディタに関連づけています。上記 c:\sample.txt のアイコンをダブルクリックすれば、いつもの秀丸でファイルが開かれます。しかし、at コマンドで登録したタスクでは、なぜかメモ帳が起動します。また、別のマシンで同じ動作を確認したところ、秀丸が起動するには起動したのですが、それまでの設定が無視されて初期状態の秀丸が起動しました。このへんの仕組みについては、よくわかりません。そのうち、Windows 系の MVP さんにでも聞いてみます。