Necesito poder iniciar procesos (tanto en la consola como en ventanas) sin que se robe el foco. La única forma dentro del marco .NET que encontré para hacer esto es Microsoft.VisualBasic.Interaction.Shell con Microsoft.VisualBasic.AppWinStyle. [Minimized | Normal] NoFocus (cuyo mapa SW_SHOWMINNOACTIVE/SW_SHOWMA se pasa a ShellExecute).Iniciar un proceso sin robar el foco (C#)
En la versión actual de mi código (que roba el foco), estoy usando System.Diagnostics.Process y confiando en algunas de las funcionalidades que me proporcionan, que no es el método Interaction.Shell.
2 preguntas (uno grave, y una ventilación mi frustración que realmente no le espera una buena respuesta a)
1.) Estoy en lo cierto que no tengo más remedio que envuelva o CreateProcess ShellExecuteEx mí mismo, o me falta alguna otra solución? Realmente esperaba evitar esto, ya que Process es un envoltorio tan completo y útil que no es esta supervisión, y habría tanta funcionalidad para implementar, llamadas de P/Invoke para depuración y toda clase de dolores variados.
2.) ¿Por qué un equipo en Microsoft crearía una envoltura completa (de lo contrario) y luego excluiría la mitad de los posibles valores de ProcessWindowStyle, mientras que otro equipo creó una envoltura similar que era mucho menos completa pero proporcionó todas las estilos de ventana útiles?
¿Está codificando algo que no quiere que el usuario sepa o no quiera molestar al usuario? Jajaja no importa ...: -/ – jasonco
¿No hay otra opción? El espacio de nombres Microsoft.VisualBasic es parte del framework .NET y está disponible en cualquier instalación de .NET. No usarlo sería un error.Tiene muchos otros extras, pero no puede averiguar si no puede obtener el nombre del espacio de nombres. –
Hola nobugz, me disculpo si di la impresión de que tuve un problema con el espacio de nombres. Ese no es mi problema, de hecho, uso un buen analizador de Microsoft.VisualBasic en otra parte del código. El problema es que Microsoft.VisualBasic.Interaction.Shell no me da la posibilidad de recibir una notificación al salir o abortar un proceso. Tendría que envolverlo de alguna manera para obtener esa funcionalidad, donde la clase Process me da esas dos cosas. – psm321