Getting subprocesses to be hidden on Windows

Larry Bates larry.bates at websafe.com
Tue Aug 28 12:18:52 EDT 2007


geoffbache wrote:
> Hi,
> 
> As part of my efforts to write a test tool that copes with GUIs
> nicely, I'm trying to establish how I can start a GUI process on
> Windows that will not bring up the window. So I try to hide the window
> as follows:
> 
> info = subprocess.STARTUPINFO()
> info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
> info.wShowWindow = subprocess.SW_HIDE
> 
> proc = subprocess.Popen(..., startupinfo=info)
> 
> This works, in a way, but doesn't work recursively. I.e. if the
> started process itself starts a window, that second window will not be
> hidden. This even applies to dialog boxes within the application. So
> instead of a lot of windows popping up I now get a lot of disembodied
> dialogs appearing, which is a slight improvement but not much.
> 
> Also, certain processes (e.g. tkdiff) seem to ignore the directive to
> be hidden altogether.
> 
> This is dead easy on UNIX with virtual displays like Xvfb. Can someone
> shed any light if it's possible on Windows from python?
> 
> Regards,
> Geoff Bache
> 
While I'm not entirely sure I understand what you want, I think you can 
accomplish it by using win32CreateProcess instead of subprocess.  You can run 
the application minimized or perhaps in a REALLY small window.  If you have 
modal dialog boxes, I don't think you can do anything as they don't run in the 
parent windows frame but rather outside (I could be wrong about this).

-Larry



More information about the Python-list mailing list