在QT中要想执行调用cmd命令:
一种方式是使用system()函数,但是此函数没有返回值,有时不太方便,
另一种方法就是生成QProcess对象,调用其execute函数,有时当你用这个方法时,当cmd命令含有中文和空格时就不执行。下面来说说这个情况。
仔细看QProcess的API,发现有重载的两个execute函数:
execute ( const QString &, const QStringList & ) : int
execute ( const QString & ) : int
大多数情况下我们用的是第二个:例如我要调用一个叫regasm2.0.exe的程序,执行一句
C:/Documents and Settings/Administrator/桌面/新建文件夹/regasm2.0.exe /s /nologo /codebase C:/aa.dll
(不用管这个干什么用的)可以看到cmd命令中有空格和中文,所以当我们执行
QProcess pro(0);
cmd = "C:/Documents and Settings/Administrator/桌面/新建文件夹/regasm2.0.exe /s /nologo /codebase C:/aa.dll";
int bret = pro.execute(cmd);你会发现这样是执行不通过的,但是使用两个参数的execute函数就可以完成,具体如下:
QProcess pro(0);
QString t1 ="C:/Documents and Settings/Administrator/桌面/新建文件夹/regasm2.0.exe";
QStringList t2;
t2.append("/s");
t2.append("/nologo");
t2.append("/codebase");
t2.append("C:/aa.dll");
int bret = pro.execute(t1,t2);ok,大功告成!

本文详细介绍了在QT中使用QProcess对象执行包含中文和空格的cmd命令的方法,并通过对比system()函数,展示了如何正确处理这类命令以避免执行失败。
103

被折叠的 条评论
为什么被折叠?



