[英]Subprocess.Popen() : hide the cmd shell
我试图在启动时调用可执行文件,它将调用另一个可执行文件本身。 对于第一部分,我只是将可执行文件的路径添加到HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
,这有效,我的可执行文件在启动时被调用。
后者包含以下这些内容:
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
startupinfo.wShowWindow = subprocess.SW_HIDE
proc = subprocess.Popen(command, startupinfo=startupinfo)
但是,计算机启动时会弹出命令shell(cmd)。 一切正常,但它是可见的而不是隐藏的...所以基本上,我如何隐藏这个命令shell?
使用ProcessExplorer
,我有以下层次结构:
+ System
|_ Interrupts
|_ smss.exe
|_ some processes...
+ explorer.exe
|_ some processes...
|_ MYSCRIPT.EXE
这是我尝试实现的顺序:
master.exe
)调用其他人。 D:\\master.exe
的计划任务 master.exe
(以及其他我们不关心的任务)将值D:\\myscript.exe
到HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
D:\\myscript.exe
(它工作正常并且有效),但它确实在命令提示符下运行,我希望它是不可见的。 正在打开的控制台窗口可能属于运行脚本的Python进程。 向我们显示运行脚本的注册表中的条目。
如果您运行控制台程序,Windows将创建一个控制台窗口。 “python.exe”是一个控制台程序。
如果您不想要控制台窗口,可以使用“pythonw.exe”而不是“python.exe”运行Python脚本。
您可以将其编译为exe格式。 当我遇到这个问题时,我使用py2exe将python文件编译为隐藏的可执行文件。
您所要做的就是更改setup.py文件(用于编译)
setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}})
至
setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}})
我有同样的问题,我使用Pyinstaller 。
Pyinstaller是一个智能的跨平台工具,可将.py文件编译为独立的可执行文件。
通过以下方式安装
pip install pyinstaller
(更多信息,请点击此处 )
使用以下命令隐藏控制台(使脚本成为进程):
pyinstaller yourfilename.py -F --windowed
(使用“-F”标志,您将获得单个.exe文件,并使用“--windowed”标志控制台将被隐藏)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.