// CurrentDirectory の移動
sh.CurrentDirectory = "d:/" ;
print( sh.CurrentDirectory );
■ Exec
SYNTAX
Exec( cmd ) // command line 文字列
DESC
外部 Application を SubProcess で実行する
stdout を取得できるので, 連携できる
var sh = new ActiveXObject("WScript.Shell" );
// Exec() は Block されない
var oExec = sh.Exec("notepad" );
// プロセス ID
oExec.processID;
// SubProcess が実行中は 0 がかえる
while ( oExec.Status == 0 )
{
WScript.echo( "wait" );
WScript.Sleep(100);
}
WARNING
// サブプロセスが終了していないと 0 が常にかえる
// 正しい値をとるには, 処理の終了をまつ
// ExitCode は C での int main() の戻値
code = oExec.ExitCode;
var oExec = sh.Exec("notepad" )
// 3 sec まつ
WScript.Sleep(3000);
// 実行中の SubProcess を終了させる
oExec.Terminate();
// stdout がすべて取得するまで まつことで終了まちもできる
var s = oExec.StdOut.ReadAll();
var s = "" ;
while ( !oExec.StdOut.AtEndOfStream ) {
// 1 byte 読む
s += oExec.StdOut.Read(1);
// 1 行よむ ( 引数はなし )
s += oExec.StdOut.ReadLine();
if ( s.indexOf("Press any key" ) != -1 ) break;
}
■ Run
DESC
外部アプリケーションを SubProcess で実行する
Window を最小化して実行できる
stdout をとるには, Exec() を使うこと
SYNTAX
Run(
cmdline // cmdline 文字列
[, modeWindow ] // Window の表示 mode
[, isWait ] // SubProcess の終了をまつか
)
RET
ExitCode // 実行した Program の終了コード
Explorer
wscript.exe // Interpreter
notepad
var sh = new ActiveXObject("WScript.Shell" );
// notepad を非表示で起動
// 処理は Block される
sh.Run( "notepad" , 0, true );
// cmdline を渡すため
// 以下の記述でも OK
sh.Run( "notepad d:/foo.txt" , 0, true );
// Redirect はできない
sh.Run( "hostname > foo.txt" , 0, true );
// notepad を最小化で起動
// 処理は Block される
sh.Run( "notepad" , 7, true );
WindowMode
0 ウィンドウを非表示 && 別のウィンドウをアクティブにする
1 ウィンドウをアクティブ && 表示 ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る
2 ウィンドウをアクティブにし、最小化ウィンドウとして表示する
3 ウィンドウをアクティブ && 最大化にして表示
4 ウィンドウを最新のサイズと位置で表示 アクティブ・ウィンドウは切り替わらない
5 ウィンドウを現在のサイズと位置で表示 && アクティブにする
6 指定したウィンドウを最小化し、Zオーダー上で次に最上位となるウィンドウをアクティブにする
7 ウィンドウを最小化ウィンドウとして表示. アクティブ・ウィンドウは切り替わらない
8 ウィンドウを現在の状態で表示する。アクティブ・ウィンドウは切り替わらない
9 ウィンドウをアクティブにして表示する。ウィンドウが最小化または最大化されている場合は、元のサイズと位置に戻る
10 アプリケーションを起動したプログラムの状態に基づいて表示状態を設定する
■ SpecialFolder
SYNTAX
SpecialFolder( "path" );
DESC
Windows デフォルトの Directory パスをかえす
( MyDocument など )
// Documents and Settings/
var d = sh.SpecialFolders("MyDocuments" );
■ 環境変数(ENV)
SYNTAX
var sh = new ActiveXObject("WScript.Shell" );
var env = sh.Environment("Process" );
// Documents and Settings/usr
env.item("HOMEPATH" );
SYSTEM : 全ユーザーに適用
UEER : ユーザー環境変数。ログオン・ユーザーごとに適用
PROCESS : プロセス環境変数 現在有効な全環境変数( readonly )
VOLATILE : 一時環境変数。ログオフと同時に破棄される一時的な環境変数
// user ENV Object を取得
var WshEnvironment = sh.Environment("User" );
// .item( KEY ) で 値を取得
// 環境変数 "PATH" を参照
var val = env.item( "PATH" );
// .item( KEY )で値を指定
WshEnvironment.item( "PATH" ) = val;
// USERNAME は PROCESS になる
var env = sh.Environment("PROCESS" );
var usr = env.item( "USERNAME" );
■ レジストリ.Registery
// レジストリを作成
sh.RegWrite "HKCU\Software\ACME\FortuneTeller\" , 1, "REG_BINARY"
// KEY の値を取得
sh.RegName( "HKCU\Software\ACME\FortuneTeller\MindReader" );
// 消す
sh.RegDelete( "HKCU\Software\ACME\FortuneTeller\MindReader" );