Re: [問題] 如何判斷執行檔目前狀態?
小弟我後來發現是我lpParameters和lpDirectory這邊設不對的緣故。真是抱歉^^
這邊想再多問一個問題,我用板上大大提供的C檔去執行bat檔,最後程式只有把
printf 的那個cmd window關掉,但是我的bat檔並沒有關掉。
有趣的是,從工作管理員的介面上來看,[處理程序]那邊的確把它關掉了,但是
[應用程式]的欄位中,此bat檔卻還是存在著!!
我有看過TerminateProcess和CloseHandle中送入的引數都是&info的process值,
理論上應該會關的掉才對,是有什麼需要修正的地方嗎?
我在網路上有看到說,ShellExecuteEx打開的handle不是真正的handle?所以建議用
CreatProcess的方式來作。但是我用CreatProcess的方式來作時,雖然可以close了,
但反而不知道怎麼打開了。感覺兩邊各缺一門,有人可指教嗎?
※ 引述《snk521 (哇哈哈)》之銘言:
: 感謝各位大大的討論,小弟我還是會有個小問題,在這邊提出來一下。我的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/07 18:20)
※ 編輯: snk521 來自: 203.86.63.133 (06/07 18:56)
討論串 (同標題文章)