相关疑难解决方法(0)

具有隐藏窗口的跨平台子流程

我想在后台打开一个进程并与之交互,但这个进程在Linux和Windows中都应该是不可见的.在Windows中,您必须使用STARTUPINFO执行某些操作,而这在Linux中无效:

ValueError:仅在Windows平台上支持startupinfo

有没有比为每个操作系统创建单独的Popen命令更简单的方法?

if os.name == 'nt':
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
    proc = subprocess.Popen(command)    
Run Code Online (Sandbox Code Playgroud)

python linux windows subprocess cross-platform

37
推荐指数
2
解决办法
1万
查看次数

使用Popen在没有控制台的情况下在pythonw中运行进程

我有一个带有GUI的程序,通过Popen调用运行外部程序:

p = subprocess.Popen("<commands>" , stdout=subprocess.PIPE , stderr=subprocess.PIPE , cwd=os.getcwd())
p.communicate()
Run Code Online (Sandbox Code Playgroud)

但是无论我做什么,都会弹出控制台(我也尝试将NUL传递给文件句柄).如果没有得到我调用的二进制文件来释放它的控制台,有没有办法做到这一点?

python console user-interface popen pythonw

17
推荐指数
2
解决办法
1万
查看次数

在没有shell窗口的情况下运行shell命令

使用subprocess.call或者subprocess.Popen,执行shell命令会使shell窗口快速显示并消失.

如何在没有shell窗口的情况下运行shell命令?

python windows shell subprocess

7
推荐指数
1
解决办法
3451
查看次数

Subprocess.Popen():隐藏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)
Run Code Online (Sandbox Code Playgroud)

但是,计算机启动时会弹出命令shell(cmd).一切正常,但它是可见的而不是隐藏的...所以基本上,我如何隐藏这个命令shell?

使用时ProcessExplorer,我有以下层次结构:

+ System
|_ Interrupts
|_ smss.exe
    |_ some processes...
+ explorer.exe
    |_ some processes...
|_ MYSCRIPT.EXE
Run Code Online (Sandbox Code Playgroud)

这是我尝试实现的顺序:

  • 我创建了一个ISO文件,其中包含我想在VM上运行的所有Python可执行文件.其中一个(master.exe)调用其他人.
  • 我创建了一个自动挂载后者的VM
  • 准备好的VM有一个调用的计划任务 D:\master.exe
  • master.exe(这是不是在这里我们所关心的其他任务)增加值D:\myscript.exe到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • VM重新启动
  • D:\myscript.exe 运行(并且它工作正常并且有效),但它确实在命令提示符下运行,我希望它是不可见的.

python windows subprocess cmd

6
推荐指数
1
解决办法
7425
查看次数