I wrote some statements like below:
os.system(cmd) #do something
subprocess.call('taskkill /F /IM exename.exe')
both will pop up a console.
How can I stop it from popping up the console?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The process STARTUPINFO can hide the console window:
si = subprocess.STARTUPINFO()
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW
#si.wShowWindow = subprocess.SW_HIDE # default
subprocess.call('taskkill /F /IM exename.exe', startupinfo=si)
Or set the creation flags to disable creating the window:
CREATE_NO_WINDOW = 0x08000000
subprocess.call('taskkill /F /IM exename.exe', creationflags=CREATE_NO_WINDOW)
The above is still a console process with valid handles for console I/O (verified by calling GetFileType on the handles returned by GetStdHandle). It just has no window and doesn’t inherit the parent’s console, if any.
You can go a step farther by forcing the child to have no console at all:
DETACHED_PROCESS = 0x00000008
subprocess.call('taskkill /F /IM exename.exe', creationflags=DETACHED_PROCESS)
In this case the child’s standard handles (i.e. GetStdHandle) are 0, but you can set them to an open disk file or pipe such as subprocess.DEVNULL (3.3) or subprocess.PIPE.
Method 2
Add the shell=True argument to the subprocess calls.
subprocess.call('taskkill /F /IM exename.exe', shell=True)
Or, if you don’t need to wait for it, use subprocess.Popen rather than subprocess.call.
subprocess.Popen('taskkill /F /IM exename.exe', shell=True)
Method 3
Just add:
subprocess.call('powershell.exe taskkill /F /IM exename.exe', shell=True)
Method 4
Try subprocess.Popen(["function","option1","option2"],shell=False).
Method 5
Try to change the extension from .py to .pyw
Its basically just a Python User Interface file. So it opens up a new Window without the command line. chech this link (filext.com/file-extension/PYW)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0