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 찾을 수 있습니다. 예를 들어 C:\드라이브에 있는 testFile.txt 모든 파일의 전체 경로를 반환하는 호출My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt")할 수 있습니다.
- Style
- AppWinStyle
Optional.
AppWinStyle; 프로그램을 실행할 창의 스타일 지정에서 AppWinStyle 선택한 값입니다. 생략
- Wait
- Boolean
Optional.
Boolean; 함수가 프로그램 완료를 Shell 기다려야 하는지 여부를 나타내는 값입니다. 생략된 경우 Wait .를 Shell 사용합니다 False.
- Timeout
- Int32
Optional.
Integer; 완료될 때까지 대기할 시간(밀리초)입니다True(있는 경우Wait). 생략 Shell 된 경우 Timeout -1을 사용합니다. 즉, 시간 제한이 Shell 없으며 프로그램이 완료될 때까지 반환되지 않습니다. 따라서 생략 Timeout 하거나 -1 Shell 로 설정하면 제어권을 프로그램에 반환하지 않을 수 있습니다.
반품
여전히 실행 중인 경우 프로그램의 프로세스 ID가 포함된 정수입니다. 프로그램이 이미 실행을 완료한 경우 0입니다.
예외
Style 은 0~9 범위 내에 있지 않습니다( 포함).
Shell 파일을 찾을 PathName 수 없습니다.
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 계속 실행되는지 여부에 따라 달라집니다. 제한 시간이 만료되기 True 전에 설정 Wait 되고 프로그램이 완료되면 0을 반환합니다Shell. 시간 제한이 만료되거나 생략 Wait 하거나 이를 설정 FalseShell 하면 프로그램의 프로세스 ID가 반환됩니다. 프로세스 ID는 실행 중인 프로그램을 식별하는 고유 번호입니다.
시작 실패
함수가 Shell 명명된 프로그램을 FileNotFoundException 시작할 수 없는 경우 오류가 발생합니다. 예를 들어 System.Windows.Forms 사용하여 애플리케이션에서 command.com 같은 16비트 프로그램을 실행하려고 할 때 발생할 수 있습니다. 해결 방법을 위해 원하는 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이라는 파일을 찾습니다.
Important
경로 및 파일 사양을 따옴표로 묶지 않으면 파일 이름 또는 경로 노드에 공백이 포함된 경우 보안 위험이 있습니다. 앞의 예제에서 경로 노드 \Program Files 에는 공백이 포함됩니다. 사양이 따옴표 안에 있지 않고 Program.exe 프로그램이 C:\에 설치된 경우(예: 불법 변조) Windows display.exe 대신 실행합니다.
Important
이 함수에는 Shell 부분 신뢰 상황에서의 실행에 영향을 줄 수 있는 관리되지 않는 코드 권한이 필요합니다. 자세한 내용은 SecurityPermission 참조 하세요.