2012-05-14 18 views
2

我想在我的Qt應用程序中按下按鈕時啓動可執行文件。 這個.exe總是位於與Qt應用程序本身相同的目錄中。當路徑中出現空格時,啓動與Qt應用程序相同的目錄的可執行文件

有時在該目錄的路徑中有空白。這似乎阻止.exe開始。

這裏是我的代碼(這似乎不工作):

QString path = QCoreApplication::applicationDirPath(); 
path.append("/executable.exe"); 

QProcess process; 
process.execute(path); 

我不知道是否有可能開始.exe而不顯示命令提示符第一。 當.exe正在運行時,我必須關閉Qt應用程序,而.exe繼續運行。

+0

你的意思是process.execute(路徑),對吧? – Spidey

+0

是的,我改變了帖子。 –

+0

@ OO-SKY:我想知道帖子裏還有什麼不同嗎? – PlasmaHH

回答

6

execute(QString)對可執行文件路徑和參數都使用單個字符串。沒有適當的引用,C:\A path with spaces\foo.exe將被解釋爲c:\A作爲可執行文件並且pathwithspaces\foo.exe作爲參數。

爲了避免這種情況,使用接受的參數作爲單獨的字符串列表超載execute(QString, QStringList),即使你不希望在所有來傳遞參數:

QProcess::execute(path, QStringList()); 

這做正確的事,並且不需要你方的任何引用。

+0

謝謝,這是空白問題的答案。我現在面臨的問題是,除了使用我的可執行文件(這是一個NSIS安裝程序)之外,它適用於每個應用程序。這可能是由於必要的管理員權限? –

相關問題