Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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执行cmd命令?_C++_Qt - Fatal编程技术网

C++ 如何使用QProcess执行cmd命令?

C++ 如何使用QProcess执行cmd命令?,c++,qt,C++,Qt,我正在尝试使用以下命令执行cmd命令 QProcess::startDetached("cmd /c net stop \"MyService\""); 这似乎并没有停止服务。但是,如果我从start>>run运行它,它会工作。QProcess::startDetached将第一个参数作为要执行的命令,以下参数(由空格分隔)将被解释为该命令的单独参数 因此,在这种情况下:- QProcess::startDetached("cmd /c net stop \"MyService\""); 该

我正在尝试使用以下命令执行cmd命令

QProcess::startDetached("cmd /c net stop \"MyService\"");

这似乎并没有停止服务。但是,如果我从start>>run运行它,它会工作。

QProcess::startDetached将第一个参数作为要执行的命令,以下参数(由空格分隔)将被解释为该命令的单独参数

因此,在这种情况下:-

QProcess::startDetached("cmd /c net stop \"MyService\"");
该函数将cmd视为命令,并将/c、net、stop和“MyService”作为参数传递给cmd。但是,除了/c之外,其他参数是单独解析的,并且不是有效的参数

您需要做的是在“net stop \“MyService\”周围使用引号将其作为单个参数传递,这样您就可以:-

QProcess::startDetached("cmd /c \"net stop \"MyService\"\"");
或者,使用字符串列表,您可以使用:-

QProcess::startDetached("cmd", QStringList() << "/c" << "net stop \"MyService\"");

QProcess::startDetached(“cmd”,QStringList())Try startDetached(“cmd”,QStringList())以下是我尝试过的
QProcess::startDetached(“cmd.exe”,QStringList()@MistyD:像Frank建议的那样,在没有多余空格的情况下尝试一下。我尝试过-不幸的是它不起作用第二个示例应该是:
QProcess::startDetached(“cmd/c \“net stop\\\\\”MyService\\\“\”);
(注意参数字符串中的额外转义)