Spawning Cmd Window via Subprocess

D

D

Hello,

I would like to be able to spawn a new CMD window (specifing size,
color and placement of the window), and write to it separately.
Specifically, I have a backup program that displays each file backed
up in the main window, and I would like to spawn and continually
update a second CMD window that will display the current status (i.e.
number of files backed up, amount of data backed up). Also, I only
want to display the update messages, don't want to display any command
prompts. I'm thinking I should be able to do this using subprocess,
but I haven't been able to find out how. Any help would be greatly
appreciated!
 
T

TerryP

Hello,

I would like to be able to spawn a new CMD window (specifing size,
color and placement of the window),  and write to it separately.
Specifically, I have a backup program that displays each file backed
up in the main window, and I would like to spawn and continually
update a second CMD window that will display the current status (i.e.
number of files backed up, amount of data backed up).  Also, I only
want to display the update messages, don't want to display any command
prompts.  I'm thinking I should be able to do this using subprocess,
but I haven't been able to find out how.  Any help would be greatly
appreciated!

you'll likely want to fiddle with subprocess.Popen with the arguments
set to suitable values to invoke a cmd window and establish pipes for
communication; see the documentation. If that doesn't work, it would
probably be time to muck with the Windows API.
 
D

D

you'll likely want to fiddle with subprocess.Popen with the arguments
set to suitable values to invoke a cmd window and establish pipes for
communication; see the documentation. If that doesn't work, it would
probably be time to muck with the Windows API.

Thanks, TerryP..I briefly played around with subprocess.Popen, but so
far no luck (certainly not to say I haven't missed something). You
could be right that the Win API is needed.. I try to avoid whenever
possible though. :)
 
G

Gabriel Genellina

Thanks, TerryP..I briefly played around with subprocess.Popen, but so
far no luck (certainly not to say I haven't missed something). You
could be right that the Win API is needed.. I try to avoid whenever
possible though. :)

If all you need is a status line, try using SetConsoleTile; it sets the
window title (caption) and you don't need a second console.

from win32api import SetConsoleTitle
SetConsoleTitle("File %d/%d - Bytes %s/%s total" %
(i, len(files), bytes2str(fsize), bytes2str(totalsize)))

If you still require a separate console (and a separate process, and some
form of IPC...) use the startupinfo argument to subprocess.Popen (from
win32process; the one from subprocess only supports a few fields). You can
find the structure definition in the Microsoft documentation:
http://msdn.microsoft.com/en-us/library/ms686285(VS.85).aspx
 

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,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top