Re: [問題] 如何判斷執行檔目前狀態?

看板C_and_CPP (C/C++)作者 (哇哈哈)時間14年前 (2012/06/06 20:48), 編輯推噓0(008)
留言8則, 4人參與, 最新討論串2/3 (看更多)
感謝各位大大的討論,小弟我還是會有個小問題,在這邊提出來一下。我的bat檔是在 某個資料夾下執行的,因為bat在執行的過程當中會點開此資料夾的某執行檔, 在一般情況下,我直接在那個資料夾點擊bat檔是沒問題的,但是用了板上大大提供的 "ShellExecute"方法後,似乎bat檔認不到此執行檔 ("abc.exe不是內部或外部命令可執行的批次檔") 導致程式快速跳出。想請問是什麼問題? PS1.我是使用Windows Form專案的,想說跟這有沒有相關?因為直接用板上大大提供的 C檔作成普通專案是可以正常執行的。 PS2.我還有個狀況就是,似乎在Windows Form專案使用時,是看不到 SHELLEXECUTEINFO.lpParameters的路徑,只看的到.lpDirectory的路徑。也就是說 只看的到default值的路徑,但這在C的一般專案並不會有這樣的情形。有人遇過這樣的 情況嗎?可以分享一下嗎? 節錄bat檔片段: cd. abc.exe ※ 引述《snk521 (哇哈哈)》之銘言: : 小弟我目前用Windows Form再寫視窗程式,之前有爬文過看到若要打開某執行檔有兩個 : 方式: : 法1:先include windows.h,然後使用 system("start c:\\123.bat")即可打開某檔案 : 法2:直接用內部元件,System::Diagnostics::Process::Start("c:\\123.bat")亦可。 : 問題來了,我想要檢查123.bat檔目前是否為開啟狀態(因為有可能沒法順利執行 : 而hang在那邊),我想藉由狀態的判別來作接續動作,不知程式該如何寫? : 法1或法2的延續都可以,請指教。 : PS.一般來說我們都是直接開工作管理員來看程式是否存在在工作佇列中, : 我想到這邊就卡住了XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.86.63.133 ※ 編輯: snk521 來自: 203.86.63.133 (06/06 21:04)

06/06 21:02, , 1F
你的cd有確實cd到abc.exe所在目錄嗎? 還是只是cd. = =?
06/06 21:02, 1F

06/06 21:11, , 2F
現在同樣的程式在普通專案上執行沒問題,但在Windows Form
06/06 21:11, 2F

06/06 21:12, , 3F
上面執行就不行,難道真的是因為Windows Form的原因?
06/06 21:12, 3F

06/06 21:24, , 4F
工作目錄的關係?
06/06 21:24, 4F

06/06 21:55, , 5F
我兩個都直接給絕對路徑~但是還是一個行一個不行
06/06 21:55, 5F

06/06 22:10, , 6F
你說的是指執行bat的時候是給了bat的絕對路徑吧 那不是
06/06 22:10, 6F

06/06 22:10, , 7F
我跟a大在問的...
06/06 22:10, 7F

06/07 08:29, , 8F
可以試試看把批次檔所在目錄的絕對路徑丟進 lpDirectory
06/07 08:29, 8F
文章代碼(AID): #1Fpr6maq (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Fpr6maq (C_and_CPP)