-
我確切地告訴房東,目前沒有完美的解決方案。
誠然,所有控制台程式都可以通過管道通訊與其他程式建立輸入和輸出連線,但這取決於程式本身之間的互動。
由於標準 I/O 流的緩衝,它通常會導致程式通過管道獲取輸出而卡住。
例如,如果要使用管道來獲取 ping 的結果,則必須等到 ping 完成才能獲取它。 如果要在 cmd 中傳遞命令的結果,那麼如果該命令的輸出不會導致緩衝區重新整理,則程式將停留在那裡。
我看過上面兩個人給出的例子,它們都是執行程式獲取控制台輸出的最簡單例子。 你無法完成與cmd的互動,也無法完成與大多數有控制台輸入和輸出的程式的互動,因為這些例子是等待乙個程式執行完畢才得到輸出的,如果乙個程式在執行中暫停,等待輸入,那麼這些例子就會無一例外地卡住。
他們只是隨機製作了乙個可以得到控制台輸出的**,這種**在網際網絡上搜尋量很大。
我已經說得很清楚了,目前沒有好的解決方案。 你不必指望他們改進它,你的本質是“做乙個可以和 cmd 互動的程式,向 cmd 傳送輸入,並立即得到 cmd 的輸出”,而他們的程式是“執行乙個程式,程式完成後得到它的控制台輸出”,這兩件事是完全不同的。
為什麼他們的程式只能成功執行 ipconfig? 因為在cmd中可以執行的四個命令中,只有ipconfig是程式,其他三個是cmd命令。 他們的程式不呼叫 cmd,而是自己執行並獲取輸出,這與 cmd 無關。
我研究了很久,最後Microsoft官網給出了回覆:“沒有完美的解決方案,每次輸出後都必須要求控制台程式重新整理自己的緩衝區,以免卡頓。 “這是官方用語(原文是英文)。
因此,能否通過管道與控制台程式互動的關鍵因素是控制台程式是否經常重新整理其輸出緩衝區,如果沒有,則您自己的程式無論多麼努力都無法做到這一點。
-
版本 2 可變迴圈標頭 (dos, m, 1)。
二叉樹判斷 ()。
外延(2000年)。
超級外延(三方程釋放)。
確定第乙個迴圈 (0) 的結束時間。
-
向窗體新增乙個按鈕: CommandButtonName (name) 屬性: cmdokcaption 屬性為:
確定 (&o)。'**部分 dim 命令作為 stringprivate 子 cmdok click() shell" /c "&命令'沒關係,結束子,加你。
-
直接用外殼"shutdown -s -t 0"好吧,關機似乎是乙個外部命令。
-
shell " /c .." ..您可以在此處填寫執行語句。
-
先決條件,您構建的軟體必須以管理員身份執行,否則您將無法以管理員身份執行 cmd。
-
在 vb 中,shell 執行 cmd 命令並使用以下 ** shell:"c 要執行的命令"如果引數中有空格,則需要使用雙引號,VB 字串中使用雙引號 ("")表示。例如:shell" /c copy ""d:
ab...
-
1. VB可以使用 shell 函式來執行命令行指令。 shell 的功能就像 Windows 一樣,命令列也可以有引數。
函式還可以指定執行命令的視窗型別。
3. Shell語法:shell(pathname[,windowstyle])。
pathname 是必需的引數。 型別為 string,它指示要執行的程式的名稱,以及任何必需的引數或命令列變數,還可以包括路徑名。
windowstyle 是可選引數。 整數型別,指定程式執行時視窗的樣式。 WindowStyle 具有以下值。
常量值說明。
vbhide 0 視窗處於隱藏狀態,焦點移至隱式視窗。
vbnormalfocus 1 視窗具有焦點並恢復到其原始大小和位置。
vbminimizedFocus 2 視窗顯示為具有焦點的圖示(預設)。
vbmaximizedfocus 3 視窗是具有焦點的最大化視窗。
vbnormalnofocus 4 視窗將恢復為最近使用的大小和位置,而當前活動視窗將保持活動狀態。
vbminimizednofocus 6 視窗顯示乙個圖示,而當前活動的視窗保持活動狀態。
-
private sub command1 click()on error resume next ' 是乙個錯誤陷阱,用於防止開啟程式出錯。
shell "net user 123 123 /add",vbhide 'vbhide 是乙個引數,指示將隱藏開啟的程式視窗。
end sub
注意:您不需要開啟cmd然後執行它。 直接執行 net(如上圖所示)。