LoginSignup
1
2

More than 5 years have passed since last update.

JScriptでアクティブウィンドウを指定したバッチファイルを作成する

Posted at

1. 概要

前回、Windows起動時にNode.js(Powershell上)とUnityを起動するバッチファイルを書きましたが、アクティブウィンドウの指定ができなかったためJScriptで書き直してみました。

2. 参考サイト

  1. WSH JScriptを使いこなそう ~アプリケーション操作~
  2. WScript.ShellのRunでの、間にスペースのあるファイルパスの指... - Yahoo!知恵袋

3. 作業環境

  • Windows 10

4. 手順

参考サイト1をベースにします。

  1. JScriptと同じ階層にあるNodeフォルダをカレントディレクトリにします。(複数のPCでコードを共有していたので相対パスにしています。)

  2. Nodeフォルダ内にあるapp.jsをPowershellで起動します。
    引数でapp.jsを指定することでPowershellで起動するアプリを指定できます。その際\"でそれぞれをくくります。
    非アクティブにするためWS_NOTACT_NOMALとします。

  3. WScript.Sleep( 5000 );で5秒待機します。

  4. 今回はUnityのtest.exeファイルがデスクトップにあったので、カレントディレクトリをデスクトップに移動します。

  5. sh.Run( "test.exe", WS_ACT_NOMAL );でexeファイルをアクティブウィンドウで起動します。

// ウインドウスタイル
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;    //ウインドウは非アクティブ、サイズは最小

// Shell関連の操作を提供するオブジェクトを取得
var sh = new ActiveXObject( "WScript.Shell" );

// カレントディレクトリを設定
sh.CurrentDirectory = "../Node";
// PowershellでNode起動(非アクティブ)
sh.Run("\"C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe\" \"node app.js\"", WS_NOTACT_NOMAL );


// 5秒待機
WScript.Sleep( 5000 );

// カレントディレクトリを設定
sh.CurrentDirectory = "../../../../../Desktop";
// Unity起動(アクティブ)
sh.Run( "test.exe", WS_ACT_NOMAL );

//  オブジェクトを解放
sh = null;

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2