2012-05-26 10 views
6

Estoy ejecutando un script de Python en Windows 7 que abre un subproceso cada pocos segundos. Este subproceso abre una ventana y capta el foco, interrumpiendo cualquier intento del usuario de realizar un trabajo normal mientras se ejecuta el script. No tengo la capacidad de modificar el código del subproceso en sí. ¿Hay alguna forma de designar a todos los subprocesos abiertos por un script de python como no enfocados?Evitar que las ventanas de Python se centren

ACLARACIÓN: Necesito que la ventana se abra y se pueda ver/seleccionar, simplemente no salte inmediatamente sobre todo lo demás que esté sucediendo. En otras palabras, necesita abrirse en el fondo, no forzarse en el primer plano.

Respuesta

3

Aquí es cómo lo hice este último

# Hide the cmd prompt window 
startupinfo = subprocess.STARTUPINFO() 
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
startupinfo.wShowWindow = subprocess.SW_HIDE 
p = subprocess.Popen(args, startupinfo=startupinfo) 
+0

TL; DR, use 'startupinfo.wShowWindow = 4' (probado solo en Windows 7) El valor de wShowWindow aparentemente puede tomar más valores que solo subproceso.SW_HIDE. Los valores disponibles están documentados en los documentos de Windows para [ShowWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548 (v = vs.85) .aspx). El valor relevante es SW_SHOWNOACTIVATE, y el valor para esa enumeración es 4. –

1

Puede ejecutar procesos con una variedad de banderas con subprocess.call

Esta muestra se ejecuta la aplicación de consola sin interfaz de usuario en absoluto:

>>> import shlex, subprocess 
>>> subprocess.call("C:\Windows\some_console_app.exe", shell=True) 
Cuestiones relacionadas