精華區beta C_and_CPP 關於我們 聯絡資訊
就是想要在程式中間 半路執行一個已經編譯好的執行檔 我原本的做法是這樣 void main(){ . . . system("****.exe"); . } 後來知道 這樣要等到exe檔執行完才能執行接下來的動作 偏偏 我這個執行檔開啟後就不會關閉 所以想要知道有什麼辦法 是可以開啟執行檔後 就繼續執行下面的指令 有朋友說 好像是用 process或是 thread 可是我翻了一下書 似乎都說的太複雜 有沒有比較簡單的方式即可? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.238.204
renderer:試試 Win32 的 ShellExecute, ShellExecuteEx 11/10 20:52
Iamjkc:可以說詳細點嗎? 我查不到這個指令 11/10 21:04
UNARYvvv:你查哪邊查不到? 去 MSDN 看看吧..要不然 google 也有 11/11 00:26
> -------------------------------------------------------------------------- < 作者: ssagit (ssagit) 看板: C_and_CPP 標題: Re: [問題] 請問想在程式中要執行某個執行檔的問題 時間: Fri Nov 11 00:19:49 2005 ※ 引述《Iamjkc (跟正妹無緣)》之銘言: : 就是想要在程式中間 半路執行一個已經編譯好的執行檔 : 我原本的做法是這樣 : void main(){ : . : . : . : system("****.exe"); : . : } : 後來知道 這樣要等到exe檔執行完才能執行接下來的動作 : 偏偏 我這個執行檔開啟後就不會關閉 : 所以想要知道有什麼辦法 是可以開啟執行檔後 就繼續執行下面的指令 : 有朋友說 好像是用 process或是 thread 可是我翻了一下書 似乎都說的太複雜 : 有沒有比較簡單的方式即可? 感謝 如果你是在 Windows 下寫程式, 而且是用 Dev-C++ 或 VC++, 可以試試這樣的寫法: #include <windows.h> int main(int argc, char *argv[]) { // .... WinExec("xxxx.exe", SW_SHOWNORMAL); // .... return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.213.177
UNARYvvv:WinExec 主要是為了相容 16-bit Windows 所以盡量別用 11/11 00:29
Iamjkc:感謝你的方法 可是有個問題就是我這個執行檔是要撥放影像 11/11 00:30
Iamjkc:可是剛剛我是 程式的確有被呼叫 可是我看不要影像阿!! 11/11 00:31
※ 編輯: ssagit 來自: 203.67.213.177 (11/11 00:32)
Iamjkc:有別的嗎? 我有試過寫thread 可是都失敗 >< 11/11 00:31
ssagit:Sorry, 請把 WinExec 的第二個參數改用 SW_SHOWNORMAL 即可 11/11 00:32
ssagit:UNARYvvv 說的是可以改用 CreateProcess 來取代 WinExec, 11/11 00:38
ssagit:不過它的參數比較複雜, 就留給你自己去看了.... 11/11 00:38
ssagit:如果只是應急, 我覺得用 WinExec 倒是還好.... 11/11 00:39
Iamjkc:感恩 早知道就問了 弄thread老半天 結果這招就搞定了 11/11 00:51
> -------------------------------------------------------------------------- < 作者: UNARYvvv (有趣生活) 看板: C_and_CPP 標題: Re: [問題] 請問想在程式中要執行某個執行檔的問題 時間: Fri Nov 11 00:37:58 2005 ※ 引述《Iamjkc (跟正妹無緣)》之銘言: : 就是想要在程式中間 半路執行一個已經編譯好的執行檔 : 我原本的做法是這樣 : void main(){ : . : . : . : system("****.exe"); : . : } : 後來知道 這樣要等到exe檔執行完才能執行接下來的動作 : 偏偏 我這個執行檔開啟後就不會關閉 : 所以想要知道有什麼辦法 是可以開啟執行檔後 就繼續執行下面的指令 : 有朋友說 好像是用 process或是 thread 可是我翻了一下書 似乎都說的太複雜 : 有沒有比較簡單的方式即可? 感謝 基本上只要改成這樣就可以了: system("start ****.exe"); 例如我要執行記事本,然後不用等記事本結束,馬上接著顯示一行文字 可以這樣做: system("start notepad"); puts("after launching notepad"); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.86.120
Iamjkc:可以真感謝 唉還是這邊比較強 問同學反而給錯方向 謝謝 11/11 00:54