2014-08-05 06:37 ⁄ 工業·程式設計 ⁄ 共 804字 ⁄ 字号 小 中 大 ⁄ 評論 1 條
在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);
注:此方法可以用于windows平台,linux平台沒有亂碼問題,而且使用兩個參數的函數,居然沒有效果
轉自:解決QProcess對象調用execute執行cmd指令不支援中文和空格的問題 | 求索閣 (qiusuoge.com)