スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

アプリケーションが終了したら再度起動させるスクリプト

2009年12月25日(金)22時11分

解説

前回書いた「Windows Live Sync を粘り強くする(終了阻止編)」で使用したスクリプトの解説です。
短いものなので再掲します。

//アプリケーション名。
var AppTitle="Windows Live Sync";
//実行ファイルの場所。「\」は「\\」としてください(例:C:\\Windows\\explorer.exe)。
var AppPath="C:\\Program Files\\Windows Live\\Sync\\WindowsLiveSync.exe";
//中止メッセージ表示秒数。0で非表示、-1でタイムアウトなし。
var MsgWait=3;

var Shell=WScript.CreateObject('WScript.Shell');
var MbYesNo=4;
var MbQuestion=32;
var MbNo=7;

while(true)
{
	Shell.Run('"'+AppPath+'"',1,true);

	var WndText=MsgWait+"秒後に「"+AppTitle+"」を再起動します。";
	var WndWait=MsgWait;
	var WndTitle="「"+AppTitle+"」を再起動しますか?";

	if(MsgWait<0)
	{
		WndText="「はい」で「"+AppTitle+"」を再起動、「いいえ」でスクリプトを終了します。";
		WndWait=0;
	}

	if(MsgWait!=0)if(Shell.Popup(WndText,WndWait,WndTitle,MbYesNo+MbQuestion)==MbNo)break;
}

JavaScript で書かれており、「メモ帳」などに貼り付けて、拡張子を(「.txt」でなく)「.js」に変更すれば使えます。 
なにをやっているかといえば、「指定された実行ファイルを終了待ちで起動して、スクリプトに処理が返ってきたら、つまり起動させた実行ファイルが終了したら再び起動させる」という処理を延々ループさせているだけです。

二重起動禁止対策

ただし、それだけだと二重起動禁止のアプリケーションの場合に面倒なことになります。
つまり、うっかりこのスクリプトを二度起動させてしまった場合、二個目のスクリプトで起動されたアプリケーションは二重起動としてすぐに終了しますが、スクリプトによって直ちに再実行され、また終了しては再起動され…、といつまでも続いてしまいます。
そこで、再起動させる前にメッセージボックスを表示し、アプリケーションを再起動するか中止してスクリプトを終了させるかを選択できるようにしています。
このメッセージボックスは標準では3秒間表示されており、3秒経過すれば何もしなくてもアプリケーションが再起動します。
MS-DOS にあった CHOICE コマンドのような感じです。

メッセージボックスの時間待ち

これは WScript.Shell にある Popup の第二引数に秒数を指定することで実現していますが、この引数は本来、0を与えると「0秒、つまりメッセージボックスを表示しないではなく、「自動選択なし、つまりメッセージボックスを操作するまで次の処理に進まない」になります。
これはまあ、メッセージボックスを表示したくなければ、わざわざ「0秒」などと指定しなくとも、命令自体を書かなければ良いだけですから当然といえます。
ただ今回の場合は冒頭の変数一つで「自動選択(プラス値)」「非表示(ゼロ)」「選択待ち(マイナス値)」の3状態を切り替えたかったので、指定が「0」かそれ以外かで分岐させています。

書き換えポイント

標準では Windows Live Sync を終了後3秒経過で再起動させる設定になっていますが、冒頭部の三つの変数内容を書き換えることで他のアプリケーションにも対応できます。
「var AppTitle=」のアプリケーション名はメッセージボックスに表示するために使うだけですので、自分がわかるものであれば何でもかまいません。
「var AppPath=」は実行ファイルのフルパスに、必要があればコマンドラインスイッチも指定できます。
「var MsgWait=」は確認用のメッセージボックスの表示時間です。
プラス値であればその秒数が経過すれば自動的に「はい」が選択され、マイナス値であれば「はい」か「いいえ」が選択されるまで表示され続け、「0」の場合は非表示になります。
特に「0」にした場合、有無を言わさず再起動を繰り返しますので気をつけてください。
とはいえ「Ctrl + Alt + Delete」で起動する「タスク マネージャ」から「Wscript.exe」を強制終了させることで一応解除は可能ですので、展示用 PC などで「絶対に終了されては困る」アプリケーションに対して利用できるほどに強力なものでもありません。

関連記事

【同じタグを付けた記事の一覧】
プログラミング JavaScript

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(65)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(34)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(26)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(17)
画像管理(15)
WindowsLiveWriter(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
ウォークマン(9)
fi-6130(9)
FLAC(9)
Gracenote(8)
英語音読学習計画(8)
Prolog(8)
JavaScript(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
wxWidgets(7)
spcbght(7)
DCP-J552N(6)
W63CA(6)
MP3Gain(6)
WinRT(6)
iGoinLM(6)
VirtualBox(6)
WindowsLiveMesh(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
楽器演奏(5)
Mery(5)
LAME(5)
音楽技術(5)
GalateaProject(4)
LLVM(4)
nLite(4)
MIDI(4)
ホームページ(4)
WindowsLiveSkyDrive(4)
GalateaTalk(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
102位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
10位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。