Interaction.Shell(String, AppWinStyle, Boolean, Int32) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
実行可能プログラムを実行します。プログラムがまだ実行中の場合には、プログラムのプロセス ID を含む整数値を返します。
public static int Shell (string PathName, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
public static int Shell (string Pathname, Microsoft.VisualBasic.AppWinStyle Style = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, bool Wait = false, int Timeout = -1);
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
static member Shell : string * Microsoft.VisualBasic.AppWinStyle * bool * int -> int
Public Function Shell (PathName As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer
Public Function Shell (Pathname As String, Optional Style As AppWinStyle = Microsoft.VisualBasic.AppWinStyle.MinimizedFocus, Optional Wait As Boolean = false, Optional Timeout As Integer = -1) As Integer
パラメーター
- PathNamePathname
- String
必須です。 String
. 実行するプログラムの名前に、必要な引数とコマンド ライン スイッチを加えたものです。 PathName
には、ドライブ名とディレクトリ パスまたはフォルダー名も指定できます。
プログラムのパスがわからない場合には、GetFilesを使用するとパスを調べることができます。 たとえば、 を呼び出 My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt")
すと、ドライブ C:\ の任意の場所にという名前 testFile.txt
のすべてのファイルの完全なパスが返されます。
- Style
- AppWinStyle
省略可能。 AppWinStyle
. プログラムが実行されるウィンドウのスタイルを指定する、AppWinStyle から選択した値です。 Style
を省略すると、Shell
では AppWinStyle.MinimizedFocus
が使用されます。この場合、プログラムは最小化し、フォーカスのある状態で起動します。
- Wait
- Boolean
省略可能。 Boolean
. Shell
関数で、プログラムが完了するまで待つかどうかを示す値です。 Wait
を省略した場合、Shell
では False
が使用されます。
- Timeout
- Int32
省略可能。 Integer
. Wait
が True
の場合に、プログラムの完了を待つ時間をミリ秒単位で指定する数値です。 Timeout
を省略すると、Shell
では -1 が使用されます。この場合、タイムアウトは発生せず、Shell
はプログラムが終了するまで値を返しません。 したがって、Timeout
を省略するか -1 に設定した場合、Shell
からプログラムに制御が返されなくなる可能性があります。
戻り値
プログラムがまだ実行中の場合には、プログラムのプロセス ID を含む整数値を返します。 プログラムが既に実行を完了している場合は 0。
例外
Style
が 0 ~ 9 (両端を含む) の範囲内の値ではありません。
Shell
が PathName
ファイルを見つけられません。
PathName
が Nothing
です。
例
次の例では、 関数を Shell
使用して、ユーザーが指定したアプリケーションを実行します。 2 番目の引数として を AppWinStyle.NormalFocus 指定すると、アプリケーションが通常のサイズで開き、フォーカスが与えます。
Dim procID As Integer
' Run calculator.
procID = Shell("C:\Windows\system32\calc.exe", AppWinStyle.NormalFocus)
' The preceding path is for Windows XP.
' The Windows 2000 path is C:\WINNT\system32\calc.exe.
注釈
関数の戻り値は、 Shell
という名前 PathName
のプログラムが 戻り値を返すとき Shell
にまだ実行されているかどうかによって異なります。 を にTrue
設定Wait
し、タイムアウトが切れる前にプログラムが終了すると、 Shell
0 が返されます。 タイムアウトが切れた場合、または省略Wait
するか にFalse
Shell
設定した場合は、プログラムのプロセス ID が返されます。 プロセス ID は、実行中のプログラムを識別する一意の番号です。
開始に失敗しました
関数が Shell
名前付きプログラムを起動できない場合は、 FileNotFoundException エラーが発生します。 これは、たとえば、 を使用System.Windows.Formsしてアプリケーションから などの 16 ビット プログラムcommand.com
を実行しようとすると発生する可能性があります。 回避策として、目的の 16 ビット プログラムを呼び出す 32 ビット プログラムを実行できます。 の command.com
場合は、代替として を実行 cmd.exe
できます。
完了を待機しています
既定では、関数は Shell
プログラムを非同期的に実行します。 つまり、関数で開始されたプログラムは、関数の Shell
後のステートメントが実行される前に実行が Shell
完了しない可能性があります。 続行する前にプログラムが終了するのを待つ場合は、 を に設定 Wait
します True
。
終了コードの決定
プロセスは、終了時に 終了コード を返すことができます。 ただし、 を使用 Shell
してこの終了コードを取得することはできません。終了を待機すると 0 が返され Shell
、プロセスが とは Shell
別のオブジェクトで実行されるためです。
プロセスから終了コードを取得するには、プロセスを開始して終了を待つ独自のコードを記述する必要があります。 次の例は、プロセスを開始し、プロセスが終了するまで待機し、終了コードを取得する方法を示しています。
Dim procID As Integer
Dim newProc As Diagnostics.Process
newProc = Diagnostics.Process.Start("C:\WINDOWS\NOTEPAD.EXE")
procID = newProc.Id
newProc.WaitForExit()
Dim procEC As Integer = -1
If newProc.HasExited Then
procEC = newProc.ExitCode
End If
MsgBox("Process with ID " & CStr(ProcID) & _
" terminated with exit code " & CStr(procEC))
ファイル仕様の保護
次の例に示すように、パスとファイルの指定全体は常に引用符で囲む必要があります。
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
文字列リテラル内の隣接する二重引用符 (" "
) の各ペアは、文字列内の 1 つの二重引用符として解釈されます。 したがって、前の例では、関数に次の文字列が Shell
表示されます。
"C:\Program Files\display.exe" -a -q
パスが引用符で囲まれていない場合、Windows は C:\Program Files ディレクトリではなく、C:\ ディレクトリで という名前 Program.exe
の display.exe
ファイルを検索します。
重要
パスとファイルの指定を引用符で囲まない場合、ファイル名またはパス ノードにスペースが含まれている場合、セキュリティ上のリスクがあります。 前の例では、パス ノード \Program Files
にスペースが含まれています。 指定が引用符の内側になく、 という名前 Program.exe
のプログラムが C:\ にインストールされている場合 (不正な改ざんなど)、Windows は ではなく実行 display.exe
します。
重要
関数には Shell
アンマネージ コードのアクセス許可が必要です。これは、部分信頼の状況での実行に影響を与える可能性があります。 詳細については、「SecurityPermission」および「コード アクセス許可」を参照してください。
適用対象
こちらもご覧ください
.NET