Interaction.Shell(String, AppWinStyle, Boolean, Int32) Método

Definição

Executa um programa executável e retorna um inteiro que contém a ID do processo do programa se ele ainda estiver em execução.

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

Parâmetros

PathnamePathName
String

Required. String. Nome do programa a ser executado, juntamente com todos os argumentos necessários e comutadores de linha de comando. PathName também pode incluir a unidade e o caminho ou pasta do diretório. Se você não souber o caminho para o programa, poderá usá-lo GetFiles para localizá-lo. Por exemplo, você pode chamar My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), que retorna o caminho completo de cada arquivo nomeado testFile.txt em qualquer lugar na unidade C:\.

Style
AppWinStyle

Optional. AppWinStyle. Um valor escolhido na AppWinStyle especificação do estilo da janela na qual o programa deve ser executado. Se Style for omitido, Shell usará AppWinStyle.MinimizedFocus, o que iniciará o programa minimizado e com foco.

Wait
Boolean

Optional. Boolean. Um valor que indica se a Shell função deve aguardar a conclusão do programa. Se Wait for omitido, Shell usará False.

Timeout
Int32

Optional. Integer. O número de milissegundos a aguardar a conclusão se Wait for True. Se Timeout for omitido, Shell usará -1, o que significa que não há tempo limite e Shell não retornará até que o programa seja concluído. Portanto, se você omitir Timeout ou defini-lo como -1, é possível que Shell nunca retorne o controle ao seu programa.

Retornos

Um inteiro que contém a ID do processo do programa se ele ainda estiver em execução. 0 se o programa já tiver terminado de ser executado.

Exceções

Style não está dentro do intervalo de 0 a 9, inclusive.

Shell não é possível localizar o PathName arquivo.

PathName é Nothing.

Exemplos

O exemplo a seguir usa a Shell função para executar um aplicativo especificado pelo usuário. Especificar AppWinStyle.NormalFocus como o segundo argumento abre o aplicativo em tamanho normal e lhe dá o foco.

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.

Comentários

O valor retornado da Shell função depende se o programa nomeado ainda está em PathName execução quando Shell retorna. Se você definir Wait e True o programa for concluído antes do tempo limite expirar, Shell retornará zero. Se o tempo limite expirar ou se você omitir Wait ou defini-lo, FalseShell retornará a ID do processo do programa. A ID do processo é um número exclusivo que identifica o programa em execução.

Falha ao iniciar

Se a Shell função não puder iniciar o programa nomeado, ocorrerá um FileNotFoundException erro. Isso pode acontecer, por exemplo, quando você tenta executar um programa de 16 bits, como command.com, de um aplicativo usando System.Windows.Forms. Para uma solução alternativa, você pode executar um programa de 32 bits que chama o programa de 16 bits desejado. No caso de command.com, você pode executar cmd.exe como uma alternativa.

Aguardando conclusão

Por padrão, a Shell função executa o programa de forma assíncrona. Isso significa que um programa iniciado com a função pode não concluir a Shell execução antes que as instruções após a Shell função sejam executadas. Se você quiser aguardar a conclusão do programa antes de continuar, defina Wait como True.

Determinando o código de saída

Um processo pode retornar um código de saída quando ele é encerrado. No entanto, você não pode usar Shell para recuperar esse código de saída, porque Shell retornará zero se aguardar o encerramento e também porque o processo é executado em um objeto diferente de Shell.

Para recuperar o código de saída de um processo, você deve escrever seu próprio código para iniciar o processo e aguardar o encerramento. O exemplo a seguir mostra como iniciar um processo, esperar que ele seja encerrado e recuperar seu código de saída.

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))

Protegendo a especificação de arquivo

Você sempre deve colocar o caminho inteiro e a especificação do arquivo entre aspas, como mostra o exemplo a seguir.

ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)

Cada par de aspas duplas adjacentes (" ") dentro do literal de cadeia de caracteres é interpretado como um caractere de aspa dupla na cadeia de caracteres. Portanto, o exemplo anterior apresenta a seguinte cadeia de caracteres para a Shell função:

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

Se você não tiver o caminho entre aspas, Windows procuraria um arquivo chamado Program.exe no diretório C:\ em vez de display.exe no diretório C:\Arquivos de Programas.

Importante

Se você não colocar o caminho e a especificação do arquivo entre aspas, haverá um risco de segurança se o nome do arquivo ou um nó de caminho contiver espaços. No exemplo anterior, o nó \Program Files de caminho inclui um espaço. Se a especificação não estivesse entre aspas e um programa chamado Program.exe tivesse sido instalado em C:\, por exemplo, por adulteração ilícita, Windows o executaria em vez de display.exe.

Importante

A Shell função requer permissão de código não gerenciada, o que pode afetar sua execução em situações de confiança parcial. Para obter mais informações, consulte SecurityPermission e permissões de acesso ao código.

Aplica-se a

Confira também