天天看點

解決QProcess對象調用execute執行cmd指令不支援中文和空格的問題(轉)

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)

繼續閱讀