スクリプトとタスクスケジューラで時報を作ろうとする


 マビで、毎日リアル七時にあるミニゲーム的な物がありましてな。俺的には例の、勝っても嬉しくなく負けるとイラつくゲームの典型なんだけど、タイトルとか景品とかあるんで、入手までは我慢しようと。
 で、よく参加を忘れるんだ。あまり忘れると損になる仕様なので、時報が欲しいなー、と。
 ソフトをわざわざ入れるのも何かアレなんで、タスクスケジューラから何とかなんねーかなー、と思ったんだけど、「プログラムの開始」「電子メールの送信」「メッセージの表示」という選択肢しか無い。出来れば音を鳴らしたいのだが。

 という訳で、WSHでちょろっと書けないものかと。
 XPまでのWindowsではSNDREC32.exeに放り込むのが定番だったみたいだけど、Windows 7には無い。SoundRecorder.exeになってしまっている。調べてみると、再生させるだけのモードみたいなのも無くなったとのこと。安心のMS品質。
 それじゃー、とさらに検索すると、PowerShellで.NET Framework叩け、って話に辿り着く。えー。嫌だからJScriptで試そう(笑)。えーと、

new ActiveXObject("System.Media.SoundPlayer")

でまずオブジェクト作れるか確認。駄目だ、弾かれる。面倒なことになりそうだから即諦めよう(笑)。正しいやり方あったら教えてください。
 んじゃーPowerShellで、と。

PS > (New-Object Media.SoundPlayer("C:/foo/bar.wav")).PlaySync()

こんなんかな。シェルで実行してみたらちゃんと鳴ったし。それじゃps1ファイルを作って、と。
 ああ、デフォだとローカルでも署名が要るのか…。それじゃ、

PS > Set-ExecutionPolicy RemoteSigned

こうかな。エラーですな。管理者としてPowerShell.exeを実行し直して、と。そろそろ糞面倒くせえ。
 よしよし、行けた。あとは

> PowerShell.exe foo.ps1

で行けるな。行けるけどさ。

 めんどくっさー。

 タスクスケジューラも分かりにくいUIでイラッと来たけど、まあ登録は簡単だ。簡単だけど、窓を非表示で実行とかのオプションは無いんか。

> PowerShell -WindowStyle Hidden

でも一瞬窓が出るし。使えねーオプションだなー。ショートカット置いても本体を勝手に登録するし。MSめー。
 この辺で、もういっそのことC#とか使えばいいじゃん俺、とか思い始める。C++/CLIなんてのもあるよ!
 いや、やるなら素直にC#っすけどね。

 あ、最後に

PS > Set-ExecutionPolicy Restricted

に戻しておいた。

追記:
 cmd.exe /c echo ^Gって手もあったなあ…。

(Visited 371 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください