Win XP: How to hide command window for sub processes?

K

klausfpga

Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.

My main Python script is started with the .pyw suffix, thus I got rid
of the main console and I just see my GUI.

So far I tried
os.system()

and subprocess.call()

with os.system() the command window pops up and I see my commands
output.

with the subprocess.call() and stdin ./ stdout / stderr redirection I
manage to get rid of stdout/stderr
( redirecting to the file 'NUL:' )

but the window stays.

the subprocess is a call to a .exe file with multiple parameters.

I would appreciate any hints


bye


Klaus
 
R

Rüdiger Ranft

klausfpga said:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.

You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
su = subprocess.STARTUPINFO()
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
su.wShowWindow = subprocess.SW_HIDE
kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
r'd:\projekte\bar.py'), **kwargs )
 
C

Chris Rebert

klausfpga said:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.

You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
   su = subprocess.STARTUPINFO()
   su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
   su.wShowWindow = subprocess.SW_HIDE
   kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
   r'd:\projekte\bar.py'), **kwargs )

Interestingly, none of that appears to be documented. I smell a docs
bug waiting to be reported.

Cheers,
Chris
 
M

Martin P. Hellwig

Chris said:
klausfpga said:
Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.
You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
su = subprocess.STARTUPINFO()
su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
su.wShowWindow = subprocess.SW_HIDE
kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
r'd:\projekte\bar.py'), **kwargs )

Interestingly, none of that appears to be documented.

Except for here:
http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
 
C

Chris Rebert

Chris said:
klausfpga schrieb:

Hi,

I have a Python script which wants to start a subprocess and wait for
it to finish.

However I would like to have NO command window popping up during
execution.

You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
  su = subprocess.STARTUPINFO()
  su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
  su.wShowWindow = subprocess.SW_HIDE
  kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
  r'd:\projekte\bar.py'), **kwargs )

Interestingly, none of that appears to be documented.

Except for here:
http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx

I was referring to the following bits of the subprocess module used in
the above code:
subprocess.mswindows
subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW
subprocess.SW_HIDE

none of which are mentioned in the module's docs:
http://docs.python.org/dev/py3k/library/subprocess.html

Cheers,
Chris
 
M

Martin P. Hellwig

Chris Rebert wrote:
I was referring to the following bits of the subprocess module used in
the above code:

Me too actually :)
subprocess.mswindows
subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW
subprocess.SW_HIDE

none of which are mentioned in the module's docs:
http://docs.python.org/dev/py3k/library/subprocess.html

Since this is platform specific stuff I would argue that it has no
business being repeated, although a link to where it is documented
elsewhere would have been nice.
 
C

Chris Rebert

Chris Rebert wrote:


Me too actually :)


Since this is platform specific stuff I would argue that it has no business
being repeated, although a link to where it is documented elsewhere would
have been nice.

True, the Windows APIs are documented but it's not mentioned at all
that they're accessible in a certain form from subprocess.
Many other stdlib modules (e.g. `os` -
http://docs.python.org/library/os.html) include and list
platform-specific functions, I don't see why subprocess should be
different.

Cheers,
Chris
 
K

klausfpga

klausfpga said:
I have a Python script which wants to start a subprocess and wait for
it to finish.
However I would like to have NO command window popping up during
execution.

You need to specify the hide parameter for windows.

import subprocess
kwargs = {}
if subprocess.mswindows:
    su = subprocess.STARTUPINFO()
    su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    su.wShowWindow = subprocess.SW_HIDE
    kwargs['startupinfo'] = su
process = subprocess.Popen( (r'c:\python25\python.exe',
    r'd:\projekte\bar.py'), **kwargs )

Thanks Ruediger,

I'll try that immediately tomorrow, when working again on a windows
host.

Good to know, that the Python API supports this.
though this feature was not that easy to be found in the doc.

This will make my application much nicer.
 
R

Rüdiger Ranft

klausfpga said:
On Oct 29, 11:25 am, Rüdiger Ranft <[email protected]> wrote:
Thanks Ruediger,

I'll try that immediately tomorrow, when working again on a windows
host.

Good to know, that the Python API supports this.
though this feature was not that easy to be found in the doc.

Well, getting the point from subproces.py was easy. Finding the
documentation about STARTUPINFO in the MSDN was not. I better stop here
before this post turns into a rant about Mircosofts use of javascript.

bye
Rudi
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,480
Members
44,900
Latest member
Nell636132

Latest Threads

Top