台灣最大程式設計社群網站
線上人數
1583
 
會員總數:240909
討論主題:186668
歡迎您免費加入會員
討論區列表 >> VB.NET >> cmd.exe 的畫面如何及時回傳至 textbox內 ?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
cmd.exe 的畫面如何及時回傳至 textbox內 ?
價值 : 100 QP  點閱數:208 回應數:8

樓主


門外漢
0 11
293 22
發送站內信

各位好:
請問一下
使用Process 如何及時地將畫面顯示在textbox內
目前都看到的是指令執行完畢後才將結果輸出

網路上有看到其他方式,但是也是不行的

上面這段程式也是等cmd的指令執行完畢後才將畫面結果輸入到textbox內
因為所下的cmd會等待一段時間,因此希望能將畫面即時顯示出來,才不會認為是當掉了還是甚麼情況

搜尋相關Tags的文章: [ cmd ] , [ vb.net ] ,
本篇文章發表於2017-10-02 10:58
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
你意思是說不用等Process跑完結果就會出來了嗎?
那你有辦法偵測出結果什麼時候出來嗎?
另外你要達到這樣的效果可以考慮 執行緒 跟 委派.
本篇文章回覆於2017-10-02 11:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應


檢舉此回應
我要下的指令是一個燒錄的指令
所以指令下完要等一段時間,中間會出現一些 連線成功 清除中 燒錄完成...等訊息
我希望這些能直接顯示出來
目前是用 process.StandardOutput.ReadToEnd() 來判斷 成功或失敗,
但是按下按鈕之後會等一段時間只能等卻不知道執行的情況,只能等到最後的訊息出現來判斷成功或失敗
怕使用人員因為都沒看到東西 以為當掉了,所以希望能知道執行到甚麼情況..
本篇文章回覆於2017-10-02 12:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
看看能不能將那程式參考進來
或是加入COM 元件,就有機會達成

目前有用 VB.net 加入COM元件 (Media Player)
您試試吧

本篇文章回覆於2017-10-02 18:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Ader Chen
檢舉此回應
參考看看:
How to read standard output line by line?
https://stackoverflow.com/questions/21027400/how-to-read-standard-output-line-by-line

本篇文章回覆於2017-10-02 19:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應


檢舉此回應
參考了上面的網址,用了ping的指令來測試,還是不行是我有哪邊有錯嗎? 用ping的指令來測試因為會慢慢跑不會一下就跑完才可以知道效果


上面的還是會等整個結果跑完才會一次將所有東西貼到Textbox

至於要如何把程式參考到進來要如何使用 這方面有多一點資訊可以參考看看嗎?
本篇文章回覆於2017-10-03 10:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

Ader Chen
檢舉此回應
因 C# 與 VB 語法差異, 我修改如下程式, 測試是可以逐步顯示結果.

本篇文章回覆於2017-10-03 11:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Ader Chen
檢舉此回應
另, 第 17 行 (While standard_output IsNot Nothing) 就可以正常判斷結束了,
建議把 19 ~ 21 行的判斷式移除, 否則會少收掉一些內容喔.


本篇文章回覆於2017-10-03 11:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
建議你寫個console(主控台)介面的程式, 直接跑上面的資料, 然後把讀到的每一行都 output,

如果能夠每讀一行就印一行, 那就是你的VB.NET視窗程式必須做【非同步】的處理
(thread 或 backgroundworker 或其他可以讓視窗介面不要等到整個程式跑完才一次把整個結果顯示出來的方式)

本篇文章回覆於2017-10-03 11:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.