ShellExecute:How to open an exe file by MFC

記得碩一上軟體工程時,教授曾說過IDE是透過介面與使用者互動,當使用者需要編譯程式時才會去呼叫Compiler。沒有人會把介面和編譯器等功能通通寫在一起,不僅程式龐雜也難以維護。

直到真正開始這個Project之後才發現真是金玉良言,光是介面功能的刻劃一入門就整個一頭霧水,花了一段時間才慢慢理解到MFC的脈絡。更別提如果真的把Preprocessor、Assembler、Linker都Implement進來,之後的維護人員應該會更崩潰吧。

這樣的設計基本上UI和Assembler就是兩個執行檔,中間的串連整合學長建議可以使用Pipe來實作。不過鑒於DemoDay近在眼前,我們就先取巧的讓MFC去呼叫執行檔以及傳遞參數,至於Assembler的執行成果則用檔案存了下來,通過DemoDay再來研究吧。

要讓 MFC 去呼叫執行檔,意外的十分簡單,一行程式碼搞定:

ShellExecute( NULL,"open", "exe file location", parameter,NULL,SW_SHOWNORMAL);

基本的參數介紹可以參考資料一,寫的蠻詳細的。

另外如果參數是檔案位置,記得要用雙括號括起來,不然會系統會以為是分開的參數。

c:\\xxx.txt    (X)

"c:\\xxx.txt"   (O)

關於參數可以參考資料三,研究關於 Argc、Argv等資料。

[參考資料]

1. ShellExecute的用法

2. How to run an executable with a MFC program ?

3. MAIN(int argc, char *argv[ ]) 之用法