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
계속 실행되는지 여부에 따라 달라집니다. 제한 시간이 만료되기 True
전에 프로그램을 설정 Wait
하면 0을 반환합니다Shell
. 시간 제한이 만료되거나 생략 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.exe
된 파일을 찾습니다. C:\Program Files 디렉터리가 아닌 display.exe
디렉터리입니다.
중요
경로 및 파일 사양을 따옴표로 묶지 않으면 파일 이름 또는 경로 노드에 공백이 포함된 경우 보안 위험이 있습니다. 앞의 예제에서 경로 노드 \Program Files
에는 공백이 포함됩니다. 사양이 따옴표 안에 있지 않고 C:에 이름이 지정된 Program.exe
프로그램이 설치된 경우(예:\ 불법 변조) Windows 대신 display.exe
실행합니다.
중요
이 함수에는 Shell
부분 신뢰 상황에서의 실행에 영향을 줄 수 있는 관리되지 않는 코드 권한이 필요합니다. 자세한 내용은 액세스 권한 및 코드를 참조 SecurityPermission 하세요.