-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaliveChecker.js
57 lines (45 loc) · 1.89 KB
/
aliveChecker.js
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// ウインドウスタイル
var WS_NOTVISIVLE = 0; //ウインドウは非表示
var WS_ACT_NOMAL = 1; //ウインドウはアクティブ、サイズは通常(規定値)
var WS_ACT_MIN = 2; //ウインドウはアクティブ、サイズは最小
var WS_ACT_MAX = 3; //ウインドウはアクティブ、サイズは最大
var WS_NOTACT_NOMAL = 4; //ウインドウは非アクティブ、サイズは通常
var WS_ACT_DEF = 5; //ウインドウはアクティブ、サイズは前回終了時と同じ(アプリによって動作は異なる)
var WS_NOTACT_MIN = 7; //ウインドウは非アクティブ、サイズは最小
var INTERVAL = 5000;
// var KEY_DELAY = 5000;
var FileName = "TestApp.exe"; // exe file name.
var AppName = "TestApp"; // application name.
var isRunning = false;
var locator;
var service;
var set;
// Shell関連の操作を提供するオブジェクトを取得
var wshell = new ActiveXObject( "WScript.Shell" );
WScript.Sleep(INTERVAL);
wshell.Run(FileName, WS_ACT_NOMAL);
// WScript.Sleep(KEY_DELAY);
// wshell.SendKeys("{ENTER}"); // 起動後ENTERキーを入力させる
while (true) {
isRunning = false;
locator = WScript.CreateObject("WbemScripting.SWbemLocator.1");
service = locator.ConnectServer();
set = service.ExecQuery("select * from Win32_Process");
for (var e = new Enumerator(set); !e.atEnd(); e.moveNext()) {
var p = e.item();
if (p.Caption == FileName) {
isRunning = true;
}
}
if(!isRunning){
wshell.Run(FileName, WS_ACT_NOMAL);
WScript.Sleep(INTERVAL);
wshell.AppActivate(AppName); // アプリケーションをアクティブにする
// WScript.Sleep(KEY_DELAY);
// wshell.SendKeys("{ENTER}"); // 起動後ENTERキーを入力させる
}
WScript.Sleep(INTERVAL);
}
// 実行方法
// TestApp.exeのパスを通す
// $ cscript.exe aliveChecker.js