다음을 통해 공유


Interaction.Shell(String, AppWinStyle, Boolean, Int32) 메서드

정의

실행 프로그램을 실행하고 실행 중인 프로그램의 프로세스 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가 생략되면 ShellFalse를 사용합니다.

Timeout
Int32

선택 사항입니다. Integer. WaitTrue인 경우 완료될 때까지 대기하는 시간(밀리초)입니다. Timeout이 생략되면 Shell은 -1을 사용합니다. 이 값은 시간 제한이 없고 프로그램이 완료될 때까지 Shell이 반환되지 않음을 나타냅니다. 따라서 Timeout을 생략하거나 -1로 설정하면 Shell에서 프로그램에 제어를 반환하지 않게 됩니다.

반환

실행 중인 프로그램의 프로세스 ID가 포함된 정수입니다. 프로그램이 이미 실행을 완료한 경우 0입니다.

예외

Style의 범위는 0-9(포함)가 아니어야 합니다.

ShellPathName 파일을 찾을 수 없습니다.

PathName이(가) Nothing인 경우

예제

다음 예제에서는 Shell 사용자가 지정한 애플리케이션을 실행할 함수입니다. 지정 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 계속 실행되는지 여부에 따라 달라집니다. 를 로 설정하고 WaitTrue 시간 제한이 만료되기 전에 프로그램이 완료되면 는 Shell 0을 반환합니다. 시간 제한이 만료되거나 생략 Wait 하거나 로 FalseShell 설정하면 프로그램의 프로세스 ID가 반환됩니다. 프로세스 ID는 실행 중인 프로그램을 식별하는 고유 번호입니다.

시작 실패

함수가 Shell 명명된 프로그램을 FileNotFoundException 시작할 수 없는 경우 오류가 발생합니다. 이 발생할 수 있습니다 예를 들어 같은 16 비트 프로그램을 실행 하려고 할 때 command.com를 사용 하 여 애플리케이션에서 System.Windows.Forms합니다. 해결 방법을 위해 원하는 16비트 프로그램을 호출하는 32비트 프로그램을 실행할 수 있습니다. 의 command.com경우 를 대안으로 실행할 cmd.exe 수 있습니다.

완료 대기 중

기본적으로 함수는 Shell 프로그램을 비동기적으로 실행합니다. 즉, 함수로 시작된 Shell 프로그램이 함수 다음에 오는 문이 실행되기 전에 실행이 Shell 완료되지 않을 수 있습니다. 계속하기 전에 프로그램이 완료되기를 기다리려면 를 로 True설정합니다Wait.

종료 코드 결정

프로세스가 종료되면 종료 코드를 반환할 수 있습니다. 그러나 종료를 기다리는 경우 0을 반환하고 프로세스가 와 다른 개체Shell에서 실행되기 때문에 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)  

문자열 리터럴 내의 인접한 큰따옴표(" ")의 각 쌍은 문자열에서 하나의 큰따옴표 문자로 해석됩니다. 따라서 앞의 예제에서는 함수에 다음 문자열을 Shell 제공합니다.

"C:\Program Files\display.exe" -a -q  

따옴표로 묶인 경로가 없는 경우 Windows는 C:\Program Files 디렉터리 대신 display.exe C:\ 디렉터리에서 라는 Program.exe 파일을 찾습니다.

중요

경로 및 파일 사양을 따옴표로 묶지 않으면 파일 이름 또는 경로 노드에 공백이 포함된 경우 보안 위험이 있습니다. 앞의 예제에서 경로 노드 \Program Files 에는 공백이 포함됩니다. 사양이 따옴표 안에 있지 않고 명명 Program.exe 된 프로그램이 C:\에 설치된 경우(예: 불법 변조) Windows에서 대신 display.exe실행합니다.

중요

함수에는 Shell 부분 신뢰 상황에서의 실행에 영향을 줄 수 있는 관리되지 않는 코드 권한이 필요합니다. 자세한 내용은 및 코드 액세스 권한을 참조 SecurityPermission 하세요.

적용 대상

추가 정보