Interaction.Shell(String, AppWinStyle, Boolean, Int32) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Executa um programa executável e devolve um inteiro contendo o ID do processo do programa, caso este ainda esteja a correr.
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 executar, juntamente com quaisquer argumentos necessários e comutadores de linha de comando.
PathName pode também incluir o disco e o caminho ou pasta do diretório.
Se não souber o caminho para o programa, pode usá-lo GetFiles para o localizar. Por exemplo, podes chamar My.Computer.FileSystem.GetFiles("C:", True, "testFile.txt"), que devolve o caminho completo de cada ficheiro nomeado testFile.txt em qualquer lugar da unidade C:\.
- Style
- AppWinStyle
Optional.
AppWinStyle. Um valor escolhido a partir AppWinStyle do que especifica o estilo da janela onde o programa irá executar. Se Style for omitido, Shell usa AppWinStyle.MinimizedFocus, que inicia o programa minimizado e com foco.
- Wait
- Boolean
Optional.
Boolean. Um valor que indica se a Shell função deve esperar pela conclusão do programa. Se Wait for omitido, Shell usa False.
- Timeout
- Int32
Optional.
Integer. O número de milissegundos para esperar pela conclusão é WaitTrue. Se Timeout for omitido, Shell usa -1, o que significa que não há timeout e Shell não retorna até o programa terminar. Portanto, se omitir Timeout ou definir para -1, é possível que isso Shell nunca volte a controlar o seu programa.
Devoluções
Um inteiro contendo o ID do processo do programa, caso ainda esteja a funcionar. 0 se o programa já terminou de ser executado.
Exceções
Style não está dentro do intervalo de 0 a 9, inclusive.
Shell Não consigo encontrar o ficheiro PathName .
PathName é Nothing.
Exemplos
O exemplo seguinte utiliza a Shell função para executar uma aplicação especificada pelo utilizador. Especificar AppWinStyle.NormalFocus como segundo argumento abre a aplicação em tamanho normal e dá-lhe 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.
Observações
O valor de retorno da Shell função depende se o programa nomeado PathName em ainda está a correr quando Shell retorna. Se definires Wait para True e o programa terminar antes do timeout expirar, Shell não retorna nada. Se o timeout expirar, ou se o omitir Wait ou definir para False, Shell devolve o ID do processo do programa. O ID do processo é um número único que identifica o programa em execução.
Falha em Arranque
Se a Shell função não conseguir iniciar o programa nomeado, ocorre um FileNotFoundException erro. Isto pode acontecer, por exemplo, quando tenta executar um programa de 16 bits, como command.com, a partir de uma aplicação usando System.Windows.Forms. Como solução alternativa, pode executar um programa de 32 bits que chama o programa de 16 bits desejado. No caso de command.com, pode correr cmd.exe como alternativa.
À espera da conclusão
Por defeito, a Shell função executa o programa de forma assíncrona. Isto significa que um programa iniciado com a Shell função pode não terminar de ser executado antes de as instruções seguintes à Shell função serem executadas. Se quiser esperar que o programa termine antes de continuar, defina Wait para True.
Determinação do Código de Saída
Um processo pode devolver um código de saída quando termina. No entanto, não pode usar Shell para recuperar este código de saída, porque Shell retorna zero se esperar pela terminação, e também porque o processo corre num objeto diferente de Shell.
Para recuperar o código de saída de um processo, tens de escrever o teu próprio código para iniciar o processo e esperar pela terminação. O exemplo seguinte mostra como iniciar um processo, esperar que termine e recuperar o 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))
Proteção da Especificação do Ficheiro
Deve sempre incluir todo o caminho e a especificação do ficheiro entre aspas, como mostra o exemplo seguinte.
ID = Shell("""C:\Program Files\display.exe"" -a -q", , True, 100000)
Cada par de aspas duplas adjacentes (" ") dentro do literal da cadeia é interpretado como um carácter de aspas dupla na cadeia. Portanto, o exemplo anterior apresenta a seguinte cadeia para a Shell função:
"C:\Program Files\display.exe" -a -q
Se não tivesse o caminho incluído entre aspas, Windows procuraria um ficheiro chamado Program.exe no diretório C:\, em vez de display.exe no diretório C:\Program Files.
Importante
Se não incluir a especificação do caminho e do ficheiro entre aspas, existe um risco de segurança se o nome do ficheiro 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 executaria em vez de display.exe.
Importante
A Shell função requer permissão de código não gerida, o que pode afetar a sua execução em situações de confiança parcial. Para mais informações, consulte SecurityPermission e Permissões de Acesso ao Código.