现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

解决QProcess对象调用execute执行cmd命令不支持中文和空格的问题

2014-08-05 06:37 工业·编程 ⁄ 共 804字 ⁄ 字号 评论 2 条

在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); 

目前有 2 条留言    访客:1 条, 博主:0 条 ,引用: 1 条

  1. 啊啊啊 2021年05月26日 6:32 下午  @回复  Δ1楼 回复

    谢谢分享

外部的引用: 1 条

  • QT调用Winrar软件压缩、解压缩时需要注意的情况 | 求索阁

给我留言

留言无头像?