QProcess::startDetached(),但隐藏控制台窗口

QProcess::startDetached() but hide console window

本文关键字:隐藏 控制台 窗口 startDetached QProcess      更新时间:2023-10-16

是否可以在隐藏控制台窗口的同时使用QProcess::startDetached()在Windows中运行程序?QProcess::start()将隐藏控制台窗口,但QProcess::startDetached()不会,至少在默认情况下是这样。

我可以使用QProcess::start(),但我必须等待子程序完成,否则析构函数会强制终止它,并且我想在启动子进程后立即关闭程序。

我遇到了完全相同的问题,无法以干净的方式解决。我找到了两个选项:

  1. 破解方法:子类QProcess,启动进程后调用setProcessState(QProcess::NotRunning);。这将阻止析构函数终止进程。但它依赖于QProcess的一个实现细节
  2. 创建内存泄漏:在堆上动态创建QProcess,但从不删除它,因此从不调用其析构函数

    {
        QProcess *process = new QProcess;
        process->start("taskkill", QStringList() << "/f" << "/im" << "My Service.exe");
    }
    

您可以使用Windows API隐藏控制台。

首先,#include <windows.h>

然后呼叫ShowWindow(GetConsoleWindow(), SW_HIDE);

在分离过程中的某个地方。