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
사용자가 지정한 애플리케이션을 실행할 함수입니다. 지정 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
계속 실행되는지 여부에 따라 달라집니다. 를 로 설정하고 Wait
True
시간 제한이 만료되기 전에 프로그램이 완료되면 는 Shell
0을 반환합니다. 시간 제한이 만료되거나 생략 Wait
하거나 로 False
Shell
설정하면 프로그램의 프로세스 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 하세요.
적용 대상
추가 정보
.NET