Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QProcess::StartDetailed()但隐藏控制台窗口_C++_Windows_Qt - Fatal编程技术网

C++ QProcess::StartDetailed()但隐藏控制台窗口

C++ QProcess::StartDetailed()但隐藏控制台窗口,c++,windows,qt,C++,Windows,Qt,是否可以在Windows中使用QProcess::startDetached()运行程序,同时隐藏其控制台窗口QProcess::start()将隐藏控制台窗口,但至少在默认情况下,QProcess::StartDetailed()不会隐藏控制台窗口 我可以使用QProcess::start(),但是我必须等待子程序完成,否则析构函数将强制终止它,我想在启动子进程后立即关闭我的程序。我遇到了完全相同的问题,无法以干净的方式解决它。我找到了两种选择: 黑方法:子类QProcess并调用setPro

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


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

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

  • 黑方法:子类
    QProcess
    并调用
    setProcessState(QProcess::NotRunning)启动流程后。这将阻止析构函数终止进程。但它依赖于
    QProcess
  • 创建内存泄漏:在堆上动态创建
    QProcess
    ,但决不删除它,因此决不调用其析构函数

    {
        QProcess *process = new QProcess;
        process->start("taskkill", QStringList() << "/f" << "/im" << "My Service.exe");
    }
    
    {
    QProcess*process=新的QProcess;
    
    process->start(“taskkill”,QStringList()您可以使用Windows API隐藏控制台

    首先,包括

    然后调用
    ShowWindow(GetConsoleWindow(),SW_HIDE);

    在分离过程中的某个地方