發(fā)布時(shí)間:2024-04-15 文章來源:深度系統(tǒng)下載 瀏覽:
在某些場(chǎng)合,我們會(huì)有這樣的想法,在程序中啟動(dòng)cmd.exe,并且讓它執(zhí)行一命令. 例如想讓cmd.exe執(zhí)行taskkill. 前者很好實(shí)現(xiàn),就是調(diào)用類似于CreateProcess的API, 要實(shí)現(xiàn)后者我們可能會(huì)想到將命令taskkill加到參數(shù)中不就可以了嗎? 但是這是不可以的(添加參數(shù)的方法要稍作改動(dòng)也可以
批處理, 實(shí)際上windows為我們提供的一個(gè)腳本處理方案. 我們可以將所要執(zhí)行的腳本都一次寫入以bat為后綴的文本文件中, 我們只要去執(zhí)行這個(gè)批處理, 里面的腳本就可以執(zhí)行.
基于這個(gè)思路, 我們將我們的命令放在批處理文件中, 那么我們所舉的這個(gè)例子就可以taskkill放在bat文件中即可. 這樣我們的問題得以解決.
接下來我們看看taskkill這個(gè)命令,這個(gè)命令的作用是結(jié)束一個(gè)進(jìn)程.后面的參數(shù)會(huì)隨需而變, 參數(shù)就是想要結(jié)束的進(jìn)程進(jìn)程名, 可以簡單的將進(jìn)程的名字寫在批處理里面, 象這樣: taskkill /im winword.exe 這樣當(dāng)我們執(zhí)行這個(gè)批處理的時(shí)候,就可以結(jié)束微軟的word字處理程序. 但是這樣缺少靈活性, 結(jié)束不同進(jìn)程需要重新編輯這個(gè)批處理. 因此我們這里的winword.exe,也就是進(jìn)程名通過比處理參數(shù)的名字傳進(jìn)來.象這樣: taskkill /im %1 這里的就是傳給批處理的第一個(gè)參數(shù). 我們做了這些工作,接下來我們想結(jié)束word進(jìn)程可以這樣,執(zhí)行我們寫的批處理,參數(shù)是winword.exe
到這里可能有人問,你這樣做, 要結(jié)束進(jìn)程名不得在程序?qū)懰懒? 不不不, 千萬不要這么做, 這個(gè)參數(shù)得讓用戶自己去選擇. 還有人會(huì)說, 你用類似TerminateProcess不就可以解決這個(gè)問題, 我想說的解決問題的辦法有很多中, 只要選擇最適合你的就好. 在我的應(yīng)用場(chǎng)景中, 這個(gè)方案就是我的最佳, 因?yàn)槲矣龅降那樾吻『檬遣荒芨膭?dòng)源碼的.
寫到這里應(yīng)該結(jié)束了, 等等.
還有個(gè)問題沒有解釋清楚, 就是上面標(biāo)注的部分, 如果我們把添加參數(shù)的方法改動(dòng)一二就可以. 我們不是簡單象這樣, cmd.exe taskkill /im winword.exe 而是多加一個(gè)參數(shù)/c或者/k, 具體這兩個(gè)參數(shù)的意義請(qǐng)?jiān)诿畲翱谥休斎隿md /?查看. 我們改為: cmd.exe /c /taskkill /im winword.exe
另外我們可以把要接受的進(jìn)程可以放在一個(gè)文本文件中(.txt), 一行一個(gè)進(jìn)程名. 讓后在批處理里面用for語句進(jìn)行分析. |
上一篇: