我试图在启动时调用可执行文件,它将调用另一个可执行文件本身。对于第一部分,我只是将可执行文件的路径添加到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
(并且它正常工作),但它确实在命令提示符下运行,我希望它不可见。 答案 0 :(得分:3)
这是Python程序员遇到的典型问题 - 因此,Python本身提供了一个解决方案。它已被多次询问,例如here,但对你而言,这个问题有点复杂。
是否使用python.exe
或pythonw.exe
来运行脚本。对于第一个,打开控制台,第二个不打开。
当你使用编译过的脚本时,你必须告诉"编译器"您要使用哪个版本。假设您正在使用py2exe,您可以查看this post on SO。这里详细解释了如何继续。
答案 1 :(得分:1)
正在打开的控制台窗口可能属于运行脚本的Python进程。向我们显示运行脚本的注册表中的条目。
答案 2 :(得分:0)
如果运行控制台程序,Windows将创建一个控制台窗口。 “python.exe”是一个控制台程序。
如果您不想要控制台窗口,可以使用“pythonw.exe”而不是“python.exe”运行Python脚本。
答案 3 :(得分:0)
您可以将其编译为exe格式。当我遇到这个问题时, 我使用 py2exe 将python文件编译为隐藏的可执行文件。
您需要做的就是从
更改setup.py文件(用于编译)setup(console=['__main__.py'], options={"py2exe":{"includes":["sip"]}})
到
setup(windows=['__main__.py'], options={"py2exe":{"includes":["sip"]}})
答案 4 :(得分:0)
我遇到了同样的问题而我使用了Pyinstaller。
Pyinstaller是一个智能的跨平台工具,可将.py文件编译为独立的可执行文件。
通过以下方式安装:
pip install pyinstaller
(更多信息here)
使用以下命令隐藏控制台(使脚本成为进程):
pyinstaller yourfilename.py -F --windowed
(使用“-F”标志,您将获得单个.exe文件,并使用“--windowed”标志控制台将被隐藏)