Estoy tratando de ejecutar un programa de PowerShell, esperar a que la salida, a continuación, obtener acceso a la ExitCode, pero no tener mucha suerte. No quiero usar - Wait con Start-Process, ya que necesito algún procesamiento para continuar en el fondo. Heres un script de prueba simplificado: Ejecutar este script hará que notepad se inicie. Después de que se cierra manualmente, se imprimirá el código de salida y se iniciará de nuevo sin utilizar - wait. No se proporciona ExitCode cuando esto está cerrado: Tengo que poder realizar procesamiento adicional entre iniciar el programa y esperar a que lo deje, así que no puedo hacer uso de - Wait. Cualquier idea de cómo puedo hacer esto y aún tener acceso a la propiedad. ExitCode de este proceso se preguntó 21 de abril a las 19:23 leen lo que MSDN dice sobre ello: La sobrecarga WaitForExit () () () se utiliza para hacer que el subproceso actual Espere hasta que finalice el proceso asociado. Este método indica al componente Proceso que espere una cantidad infinita de tiempo para que el proceso salga. Esto puede hacer que una aplicación deje de responder. Por ejemplo, si llama a CloseMainWindow para un proceso que tiene una interfaz de usuario, la solicitud al sistema operativo para finalizar el proceso asociado puede no ser manejada si el proceso se escribe para no introducir nunca su bucle de mensajes. Esta sobrecarga asegura que todo el procesamiento ha sido completado, incluyendo el manejo de eventos asíncronos para la salida estándar redireccionada. Debe utilizar esta sobrecarga después de una llamada a la sobrecarga WaitForExit (Int32) cuando la salida estándar se ha redirigido a los controladores de eventos asincrónicos. Esto es por supuesto para. NET. ¿Qué te hace pensar que no espera que el proceso de la nota finalice? ¿Cuáles son los signos de eso? ¿Cuál es la prueba? No estoy seguro de si esto ha cambiado recientemente, pero de vuelta en las aplicaciones de día en la ventana El móvil nunca se cierra cuando golpeas la X para cerrarlas, solo minimizarían y seguirían ejecutándose en segundo plano (esto no era un error, era una característica, ya que la próxima vez que inicias la aplicación, se iniciaría muy rápido, yah Lo sé, loco pero cierto) por lo que podría ser por qué WaitForExit es quizás comportándose de forma extraña y esperando la puesta en marcha de la aplicación en lugar de salir. Pero entonces otra vez es apenas especulación basada en knowlegde de versiones antiguas de Windows Mobile. Viernes 20 de Febrero de 2009 23:03 Id me gustaría superar esta pregunta. Estoy en Windows Mobile 6 Standard y estoy tratando de generar una instancia de navegador. Me gustaría esperar hasta que el usuario cierre el navegador. Pero WaitForExit devuelve muy rápido. Aquí está el código: Proceso p nuevo Proceso () p. StartInfo. Argumentos quotexample-sitequot p. StartInfo. Verb quotOpenquot p. StartInfo. UseShellExecute falso p. StartInfo. FileName quotIExplore. exequot p. Start () p. WaitForExit () MessageBox. Show (quotNow el navegador debe ser closedquot) ¿Cuál debe ser la manera correcta de obtener los resultados esperados Monday, June 08, 2009 10:45 PM Dónde está el símbolo. símbolo. AlexB Tuesday, June 09, 2009 9:58 PM Estoy viendo el mismo problema, pero en XP. Creo que la prueba se puede ver en cualquier depurador (como estoy viendo), o en cualquier aplicación de consola (no necesariamente en el móvil) Miércoles, 02 de septiembre de 2009 20:35 Excepto que no se obtiene un objeto de proceso que puede utilizar. Si intenta Dim myProc como nuevo proceso () myProc Process. Start (quotiexplorerquot, quotfinance. yahoo/q/hpsquot símbolo) myProc. WaitForExit () todavía devuelve inmediatamente. Miércoles, 02 de septiembre de 2009 20:48 Problema es que no está iniciando una nueva instancia de iexplore. exe. Sólo está creando una nueva ventana en el proceso existente. Mi conjetura es iexplore. exe comienza, ve una instancia anterior y se comunica con la instancia anterior de modo que abra la nueva ventana, y entonces esta instancia que usted comenzó salidas inmediatamente. Así que el comportamiento es correcto y esperable. Blog. voidnish Miércoles, 02 de septiembre de 2009 20:52 Microsoft está realizando una encuesta en línea para entender su opinión sobre el sitio web Msdn. Si decide participar, se le presentará la encuesta en línea cuando abandone el sitio Web de Msdn. ¿Le gustaría participar? Procesos de administración en PowerShell Varias personas han preguntado recientemente cómo administrar procesos en PowerShell. Esta entrada de blog debe responder a una serie de esas preguntas. Como se podría esperar de la parte 8220shell8221 de PowerShell, no tiene que hacer nada especial para iniciar un proceso. En un lenguaje de programación como VBScript, lo que tiene que hacer algo bastante complejo como: 8220.8221 strComputer Conjunto objWMIService GetObject (8220winmgmts: 8221 8220 8221 amp amp amp strComputer 8220rootcimv28221) Conjunto objStartup objWMIService. Get (8220Win32ProcessStartup8221) Conjunto objConfig objStartup. SpawnInstance Conjunto objProcess GetObject (8220winmgmts: rootcimv2: Win32Process8221) objProcess. Create 8220Notepad. exe8221, Null, objConfig, intProcessID pero en conchas (PowerShell, cmd. exe, golpe, etc.) puede simplemente comenzar un programa como el bloc de notas simplemente escribiendo 8220notepad8221 como se muestra. Ahora observará que cuando hace esto la shell regresa inmediatamente y solicita el siguiente comando. Esto se debe a que el Bloc de notas es un proceso GUI de Win32 y se ejecuta en segundo plano. Por otro lado, si inicia una aplicación de consola como 8220ping. exe8221, PowerShell esperará hasta que se complete dicho proceso. Pero ¿y si yo quiero esperar a que el proceso de Win32 En cmd. exe, you8217d hacer esto con 8220start / wait8221 pero este comando es no (directamente) disponible en PowerShell. Entonces, ¿qué hacemos? PowerShell ejecuta ejecutables directamente. Si espera el proceso para salir, entonces el código de salida dejado en LASTEXITCODE. Ahora si un ejecutable de Win32 es el último comando en una tubería y no se redirige, entonces el proceso se ejecutará en segundo plano. Sin embargo, si canaliza su salida en algo, entonces PowerShell esperará el comando para salir. Así que esto es una espera simple (si no intuitiva) para esperar a que un proceso GUI salga. Si el proceso ya se está ejecutando, puede utilizar Get-Process para recuperar la información necesaria y, a continuación, hacer un WaitForExit () en ese objeto. Aquí hay un ejemplo algo más sofisticado en el que abrimos un documento en lugar de iniciar un proceso. Esta vez we8217ll encontrar el proceso por el título de la ventana en lugar de por el nombre del ejecutable Lamentablemente, la búsqueda de un proceso siempre significa que usted puede encontrar el proceso incorrecto. Idealmente, le gustaría obtener el objeto Proceso directamente. Así que para una gestión de procesos más precisa, tendrá que usar la clase. NET System. Diagnostics. Process e iniciar los procesos usted mismo. Por ejemplo, puede utilizar diagnostics. process :: Start () para esperar un proceso: Observe el uso de 8220pwdfoo. txt8221 para especificar la ruta completa al archivo. Esto se debe a que PowerShell mantiene su propia idea del directorio actual. (Esta nota se aplica al uso de cualquier API. NET que acceda al sistema de archivos que necesita para darle una ruta absoluta.) Ahora empezamos a volver al nivel de complejidad que encontramos en un lenguaje de programación. Sin embargo, también tiene todo el poder de esos idiomas. Here8217s un script de ejemplo 8220background. ps18221 que le permitirá ejecutar un scriptblock separado en una ventana separada (o en la misma ventana si se especifica el parámetro inconsole. Este script let8217s hacer cosas en PowerShell que usted can8217t hacer desde cmd. exe, pero puede Hacer desde VBScript. Por último, aquí hay dos formas más de trabajar con los procesos. Aunque PowerShell doesn8217t tienen un comando de inicio, cmd. exe hace lo que puede hacer una start / wait by doing Y, por último, pero no menos importante, las extensiones de la comunidad de PowerShell Incluye un cmdlets Start-Process Puede obtener una lista de estas características en: Bruce Payette MSFT
Sigma Forex es líder en Europa profesionales de comercio en línea corredores registrados en el Reino Unido y la mayoría de los países de la UE. Fue fundada por inversores privados profesionales (bancos, comerciantes, corredores y desarrolladores de software), lo que permitió a Sigma identificar las necesidades esenciales de los participantes de Forex desde el principio. Wednesday, March 18, 2009 Trading FOREX puede ser extremadamente estresante y tomar mucho tiempo. De hecho, 95 de los comerciantes pierden dinero en su primer año de comercio FOREX. Muchas personas se sienten como si si son un corredor de bolsa, commodities o comerciante de valores, pueden llegar a FOREX y aplicar el mismo sistema de comercio y beneficios. Aquí es donde estas personas van mal. El mercado FOREX un mercado extremadamente volátil y único que puede ver enormes movimientos de mercado en cuestión de minutos. Sigma proporciona los siguientes servicios que ayudan en el comercio: Un amplificador fiable plataform...
Comments
Post a Comment