プログラムを実行する、ファイルやフォルダを開く
プログラムを実行するときは、WScript.ShellオブジェクトのRunメソッドを使います。応用すると、ファイルやフォルダを開くこともできます。
Runメソッドの書式
第1引数(プログラム名)には、実行するプログラムを指定します。基本的にはフルパスで指定しましょう。
第2引数(ウィンドウ状態)には、実行したときのウィンドウの状態を指定します。(省略可能)
第3引数(待機有無)には、実行したプログラムが終了するまでスクリプトの処理を待機させるか・処理を進めるかを指定します。(省略可能)

なお、このメソッドの戻り値は、実行したプログラムの終了コードです。ただし、終了コードを参照するときは、第3引数に「True」を指定しなくてはなりません。

オブジェクト変数.Run プログラム名, ウィンドウ状態, 待機有無

 ◆ウィンドウ状態(第2引数)に指定する値
 これらの値は、定数を作成して指定するとよいでしょう。
意味
定数作成例
0 ウィンドウを非表示にします。
vbHide
1 通常のウィンドウ、かつ最前面のウィンドウにします。
vbNormalFocus
2 最小化、かつ最前面のウィンドウにします。
vbMinimizedFocus
3 最大化、かつ最前面のウィンドウにします。
vbMaximizedFocus
4 通常のウィンドウです。ただし、最前面にはなりません。
vbNormalNoFocus
6 最小化します。ただし、最前面にはなりません。
vbMinimizedNoFocus
 他にも種類がありますが省略しています。

 ◆待機有無(第3引数)に指定する値
True
(true)
実行したプログラムが終了するまで、スクリプトの処理を待機します。
実行したプログラムの終了コードを参照するときは、こちらを指定してください。
False
(false)
スクリプトの処理を続行します。
Runメソッドを使ってプログラムを実行する例
次の例では、WScript.ShellRunメソッドを使ってプログラムを実行しています。ちなみに、プログラムのパスは「短い形式」のパスで指定してください。

 ◆VBScriptでの記述例(ソースa)
Option Explicit

Const vbHide = 0             'ウィンドウを非表示
Const vbNormalFocus = 1      '通常のウィンドウ、かつ最前面のウィンドウ
Const vbMinimizedFocus = 2   '最小化、かつ最前面のウィンドウ
Const vbMaximizedFocus = 3   '最大化、かつ最前面のウィンドウ
Const vbNormalNoFocus = 4    '通常のウィンドウ、ただし、最前面にはならない
Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない

Dim objWShell

Set objWShell = CreateObject("WScript.Shell")

objWShell.Run "D:\Progra~1\AVIPreview\AVIPreview.exe", vbNormalFocus, False

WScript.Echo "AVIPreview.exeを実行しました!"

Set objWShell = Nothing

 ◆JScript(JavaScript)での記述例(ソースb)
var vbHide = 0             //ウィンドウを非表示
var vbNormalFocus = 1      //通常のウィンドウ、かつ最前面のウィンドウ
var vbMinimizedFocus = 2   //最小化、かつ最前面のウィンドウ
var vbMaximizedFocus = 3   //最大化、かつ最前面のウィンドウ
var vbNormalNoFocus = 4    //通常のウィンドウ、ただし、最前面にはならない
var vbMinimizedNoFocus = 6 //最小化、ただし、最前面にはならない

var objWShell = new ActiveXObject("WScript.Shell")

objWShell.Run("D:\\Progra~1\\AVIPreview\\AVIPreview.exe", vbNormalFocus, false)

WScript.Echo("AVIPreview.exeを実行しました!")

objWShell = null
Runメソッドを使ってファイルやフォルダを開く例
次の例は、WScript.ShellRunメソッドを使ってファイルやフォルダを開く例です。rundll32.exeというプログラムを経由して開いているのがミソです。

 ◆ファイルやフォルダを開くときの書式
rundll32.exe url.dll,FileProtocolHandler ファイルやフォルダのパス

 ◆VBScriptでの記述例(ただし、「ソースa」の変更点のみ)
'フォルダ「C:\happy」を開きます
objWShell.Run "rundll32.exe url.dll" & _
            ",FileProtocolHandler C:\happy", vbNormalFocus, False

'ファイル「c:\happy\textfile.txt」を開きます
objWShell.Run "rundll32.exe url.dll" & _
            ",FileProtocolHandler C:\happy\textfile.txt", vbNormalFocus, False

 ◆JScript(JavaScript)での記述例(ただし、「ソースb」の変更点のみ
//ファイル「c:\happy」を開きます
objWShell.Run("rundll32.exe url.dll" & _
            ",FileProtocolHandler C:\\happy", vbNormalFocus, false)

//ファイル「c:\happy\textfile.txt」を開きます
objWShell.Run("rundll32.exe url.dll" & _
            ",FileProtocolHandler c:\\happy\\textfile.txt" _
          , vbNormalFocus, false)
Copyright(C) 1999-2006 結城圭介。 All rights reserved