Msdn process waitforexit


Eu estou tendo um problema com isso e espero que alguns de vocês possam lançar alguma luz sobre isso para mim. O bloco de código: Eu mudei a URL, obviamente, mas isso não é importante. Quando eu tento executá-lo, ele me dá uma exceção na linha quotWaitForExitquot indicando "Nenhum processo está associado a este objeto. quot Qualquer ajuda aqui seria muito apreciada terça-feira, outubro 19, 2010 6:05 PM Process filename tem que ser arquivo executável mBoardProcess. StartInfo. Argumentos microsoft / pt / pt / default. aspx mBoardProcess. StartInfo. FileName quotIEXPLORE. EXEquot CODE CONVERTER SITE Editado por kaymaf terça-feira, 19 de outubro de 2010 às 18:32 Marcado como resposta por Frank L. Smith Terça-feira, 19 de outubro de 2010 6: Terça-feira, 19 de outubro de 2010, às 18:26 Gerenciando processos no PowerShell Várias pessoas perguntaram recentemente sobre como gerenciar processos no PowerShell. Esta postagem do blog deve responder a várias dessas perguntas. Como se poderia esperar da parte do PowerShell, você não precisa fazer nada especial para iniciar um processo. Em uma linguagem de programação como VBScript, você precisa fazer algo bastante complexo como: strComputer 8220.8221 Set objWMIService GetObject (8220winmgmts: 8221 amp 8220 8221 amp strComputer amp 8220rootcimv28221) Definir objStartup objWMIService. Get (8220Win32ProcessStartup8221) Definir objConfig objStartup. SpawnInstance Definir objProcess GetObject (8220winmgmts: rootcimv2: Win32Process8221) objProcess. Create 8220Notepad. exe8221, Null, objConfig, intProcessID mas em shells (PowerShell, cmd. exe, bash, etc.) você pode simplesmente iniciar um programa como o notepad simplesmente digitando 8220notepad8221 como mostrado. Agora, você notará que, quando fizer isso, o shell retornará imediatamente e solicitará o próximo comando. Isso porque o notepad é um processo de GUI do win32 e é executado em segundo plano. Por outro lado, se você iniciar um aplicativo de console como 8220ping. exe8221, o PowerShell aguardará até que esse processo seja concluído. Mas e se eu quiser esperar pelo processo Win32? Em cmd. exe, você8217d faça isso com 8220start / wait8221, mas este comando não está (diretamente) disponível no PowerShell. Então, o que fazemos PowerShell executa diretamente executáveis. Se aguarda a saída do processo, o código de saída será deixado em LASTEXITCODE. Agora, se um executável do Win32 for o último comando em um pipeline e não for redirecionado, o processo será executado em segundo plano. No entanto, se você enviar sua saída para algo, o PowerShell aguardará o comando para sair. Portanto, essa é uma espera simples (se não intuitiva) para aguardar a saída de um processo da GUI. Como alternativa, se o processo já estiver em execução, você poderá usar Get-Process para recuperar as informações necessárias e, em seguida, executar um WaitForExit () nesse objeto. Aqui está um exemplo um pouco mais sofisticado em que abrimos um documento em vez de iniciar um processo. Desta vez, we8217ll encontrará o processo pelo título da janela, em vez de pelo nome do executável. Infelizmente, procurar um processo sempre significa que você pode encontrar o processo errado. O ideal é que você goste de obter o objeto Process diretamente. Portanto, para um gerenciamento de processos mais preciso, você terá que usar a classe. NET System. Diagnostics. Process e iniciar os processos por conta própria. Por exemplo, você pode usar diagnostics. process :: Start () para aguardar um processo: Observe o uso de 8220pwdfoo. txt8221 para especificar o caminho completo para o arquivo. Isso ocorre porque o PowerShell mantém sua própria ideia do diretório atual. (Esta nota se aplica ao uso de qualquer API. NET que acesse o sistema de arquivos necessário para fornecer um caminho absoluto.) Agora, estamos começando a voltar ao nível de complexidade que você encontra em uma linguagem de programação. No entanto, você também tem todo o poder dessas linguagens. Aqui está um exemplo de script 8220background. ps18221 que permite executar um scriptblock desanexado em uma janela separada (ou na mesma janela se você especificar o parâmetro inconsole. Esse script permite que você faça coisas no PowerShell que você não pode fazer a partir do cmd. exe, mas pode Por fim, aqui estão mais duas maneiras de trabalhar com processos: Embora o PowerShell não tenha um comando de início, cmd. exe faz isso, você pode começar / esperar fazendo E, por último, mas não menos importante, as Extensões da Comunidade do PowerShell inclui um cmdlet Start-Process. Você pode obter uma lista desses recursos em: Bruce Payette MSFTIm tendo um problema com isso e espero que alguns de vocês possam lançar alguma luz sobre ele para mim O bloco de código: Eu mudei o URL, obviamente , mas isso não é importante. Quando eu tentar executá-lo, isso me dá uma exceção na linha "WaitForExitquot" indicando "Nenhum processo está associado a este objeto". Qualquer ajuda aqui seria muito apreciada. Terça-feira, 19 de outubro de 2010 18:05 Processo f O nome do arquivo deve ser o arquivo executável mBoardProcess. StartInfo. Argumentos microsoft / pt / pt / default. aspx mBoardProcess. StartInfo. FileName quotIEXPLORE. EXEquot CODE CONVERTER SITE Editado por kaymaf terça-feira, 19 de outubro de 2010 às 18:32 Marcado como resposta por Frank L. Smith Terça-feira, 19 de outubro de 2010 6: 35h Terça-feira, 19 de outubro de 2010, 18:26

Comments

Popular Posts