带有 CreateNoWindow 的 QProcess

Posted

技术标签:

【中文标题】带有 CreateNoWindow 的 QProcess【英文标题】:QProcess with CreateNoWindow 【发布时间】:2017-01-11 00:39:32 【问题描述】:

在 C# 中,有一个属性可以让应用程序在不显示应用程序窗口的情况下运行 3rd 方应用程序。

有没有什么方法可以在不使用 Win32 CreateProcess 函数的情况下运行控制台应用程序而不在 QT 中显示控制台窗口?

【问题讨论】:

【参考方案1】:

QProcess.start() 将运行控制台应用程序而不显示其窗口,但您可能还希望对其进行一些控制。请看这个例子:

QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels);
p.setStandardOutputFile("out.txt");
p.start("cmd.exe", QStringList()<<"/C"<<"ping"<<"127.0.0.1");
p.waitForStarted();
p.waitForFinished();

您可以使用 start 方法中的第二个参数(在QStringList 内)将命令和参数传递到控制台。也可以使用setStandardOutputFile 方法将输出重定向到某个文件。

如果需要显示窗口,请使用p.startDetached()

【讨论】:

所以如果我想使用 ping x.x.x.x -t ,我将需要 QThread ? @KooroshGhorbani 抱歉,您的问题不清楚,您想达到什么目的?您要运行哪个控制台应用程序?

以上是关于带有 CreateNoWindow 的 QProcess的主要内容,如果未能解决你的问题,请参考以下文章

获取 wifi 信号强度

C# - 进程 - 异步 - 读取所有输出

cmd执行命令返回执行信息

UWP 调用Win32 关机

创建进程时隐藏所有子进程

以管理员身份运行 cmd 和命令?