Interaction.Shell メソッド
アセンブリ: Microsoft.VisualBasic (microsoft.visualbasic.dll 内)

Public Shared Function Shell ( _ PathName As String, _ <OptionalAttribute> Optional Style As AppWinStyle = AppWinStyle.MinimizedFocus, _ <OptionalAttribute> Optional Wait As Boolean = False, _ <OptionalAttribute> Optional Timeout As Integer = -1 _ ) As Integer
Dim PathName As String Dim Style As AppWinStyle Dim Wait As Boolean Dim Timeout As Integer Dim returnValue As Integer returnValue = Interaction.Shell(PathName, Style, Wait, Timeout)
public static int Shell ( string PathName, [OptionalAttribute] AppWinStyle Style, [OptionalAttribute] bool Wait, [OptionalAttribute] int Timeout )
public: static int Shell ( String^ PathName, [OptionalAttribute] AppWinStyle Style, [OptionalAttribute] bool Wait, [OptionalAttribute] int Timeout )
public static int Shell ( String PathName, /** @attribute OptionalAttribute() */ AppWinStyle Style, /** @attribute OptionalAttribute() */ boolean Wait, /** @attribute OptionalAttribute() */ int Timeout )
public static function Shell ( PathName : String, Style : AppWinStyle, Wait : boolean, Timeout : int ) : int
- PathName
必須。String。実行するプログラムの名前に、必要な引数とコマンド ライン スイッチを加えたものです。PathName には、ドライブ名とディレクトリ パスまたはフォルダ名も指定できます。
プログラムのパスがわからない場合には、My.Computer.FileSystem.GetFiles メソッドを使用するとパスを調べることができます。たとえば My.Computer.FileSystem.GetFiles("C:\", True, "testFile.txt") を呼び出すと、ドライブ C:\ 内で名前が testFile.txt であるすべてのファイルの完全パスが返されます。
- Style
省略可能。AppWinStyle。プログラムが実行されるウィンドウのスタイルを指定する、AppWinStyle 列挙型から選択した値です。Style を省略すると、Shell では AppWinStyle.MinimizedFocus が使用されます。この場合、プログラムは最小化し、フォーカスのある状態で起動します。
- Timeout
省略可能。Integer。Wait が True の場合に、プログラムの完了を待つ時間をミリ秒単位で指定する数値です。Timeout を省略すると、Shell では -1 が使用されます。この場合、タイムアウトは発生せず、Shell はプログラムが終了するまで値を返しません。したがって、Timeout を省略するか -1 に設定した場合、Shell からプログラムに制御が返されなくなる可能性があります。
実行可能プログラムを実行します。プログラムがまだ実行中の場合には、プログラムのプロセス ID を含む整数値を返します。

詳細については、Visual Basic のトピック「Shell 関数」を参照してください。
Shell 関数の戻り値は、Shell が値を返すときに PathName で指定されたプログラムがまだ実行中かどうかによって決まります。Wait を True に設定しているときに、タイムアウトの前にプログラムが終了した場合、Shell は 0 を返します。タイムアウトになった場合、または Wait を省略するか、False に設定した場合には、Shell はプログラムのプロセス ID を返します。プロセス ID とは、実行中のプログラムを識別する一意の番号です。
起動の失敗指定したプログラムを Shell 関数で起動できない場合、FileNotFoundException エラーが発生します。このエラーは、たとえば System.Windows.Forms を使用するアプリケーションから command.com などの 16 ビット プログラムを実行しようとすると発生します。このエラーを回避するには、目的の 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))
次の例に示すように、指定するパスとファイル名は全体を引用符で囲む必要があります。
文字列リテラルの中で隣接する 2 つの二重引用符 (" ") は、文字列内の 1 つの二重引用符として解釈されます。したがって、前の例では Shell 関数に次の文字列が渡されます。
パスを引用符で囲まなかった場合、C:\Program Files ディレクトリ内の display.exe ではなく、C:\ ディレクトリ内の Program.exe というファイルが検索されます。
![]() |
---|
指定するパスとファイル名を引用符で囲まない場合、ファイル名またはパス ノードに空白が含まれているとセキュリティ リスクが発生します。前の例の場合、パス ノード \Program Files に空白が含まれています。引用符に囲んで指定しなかった場合、不正な改変などによって C:\ に Program.exe という名前のプログラムがインストールされていると、display.exe ではなくそのプログラムが実行されます。 |

Shell 関数を使用して、ユーザーの指定したアプリケーションを実行する例を次に示します。2 番目の引数に AppWinStyle.NormalFocus を指定すると、アプリケーションが通常のサイズで開き、そこにフォーカスが移動します。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Interaction クラス
Interaction メンバ
Microsoft.VisualBasic 名前空間
ArgumentException
FileNotFoundException
NullReferenceException
その他の技術情報
Shell 関数
AppWinStyle 列挙型
My.Computer.FileSystem.GetFiles メソッド
AppActivate 関数
Weblioに収録されているすべての辞書からInteraction.Shell メソッドを検索する場合は、下記のリンクをクリックしてください。

- Interaction.Shell メソッドのページへのリンク