1

我找到了这个主题,我发现这是一个解决方案:

模块子进程没有属性“STARTF_USESHOWWINDOW”

但是当我运行代码时,实际情况有所不同。:/

  1. 运行我的代码:

    # Get the environment variables from OO-Python using subprocess
    oo_py_exec = os.path.join(oo_dir, r'program\python.exe')
    python_oo_script = ' ;'.join([
        "-cimport os",
        "print(os.environ['URE_BOOTSTRAP'])",
        "print(os.environ['UNO_PATH'])",
        "print(os.environ['PATH'])",
    ])
    
    subprocess.STARTF_USESHOWWINDOW
    info = subprocess.STARTUPINFO()
    info.dwFlags = subprocess.STARTF_USESHOWWINDOW
    info.wShowWindow = subprocess.SW_HIDE
    process = subprocess.Popen([oo_py_exec, python_oo_script],
        stdout=subprocess.PIPE, startupinfo=info)
    result = process.communicate()
    

显示控制台。

  1. 从链接运行代码:

    kwargs = {}
    if subprocess.mswindows:
         su = subprocess.STARTUPINFO()
         su.dwFlags |= subprocess.STARTF_USESHOWWINDOW
         su.wShowWindow = subprocess.SW_HIDE
         kwargs['startupinfo'] = su 
    subprocess.Popen("cmd.exe", **kwargs)
    

控制台也显示了!

赢 xp, py 2.6

4

2 回答 2

1

您不应该使用python.exe,而是pythonw.exe-它们是相同的,除了一个确实显示控制台,另一个没有(w虽然不知道它代表什么)。

于 2012-05-17T14:20:12.647 回答
0

尝试添加以下行: info.wShowWindow=11 这隐藏了控制台窗口。剩下的问题:焦点改变了。不知道为什么,但是假设你运行这个 python 代码,调用一个 .exe 同时编辑一个文档。不好玩,因为你的输入很多时候会误入歧途

于 2014-03-15T22:22:29.800 回答