2013-10-19 76 views
0

我有幾個關於在Visual Basic中運行批處理文件的問題。在Visual Basic中運行批處理文件

在VB窗體上有一個按鈕,並且有按鈕的點擊事件。

示例代碼:

Dim pathtobatfile2 As String 
    pathtobatfile2 = "C:\extract.bat" 
    ............... 
    psi2.UseShellExecute = False 
    Dim process2 As Process = process.Start(psi) 
    process2.WaitForExit() 
    'then do something after the bat file done 

以上代碼當用戶點擊按鈕時,一個隱藏的批處理文件(.bat)上運行的後端裝置。

我的問題是,雖然用戶點擊此btn,整個應用程序窗口將凍結,甚至不能最小化任務欄。

有沒有什麼辦法可以運行批處理文件,得到一些返回值讓我知道它已完成?或它是哪種狀態?因爲我也想顯示它的進度條。

任何想法?提前致謝。

+2

你認爲'process2.WaitForExit'可能是罪魁禍首嗎? – Plutonix

+0

你的蝙蝠文件在做什麼?如果你手動運行它,它會輸出什麼東西到控制檯上,請張貼你正在嘗試做什麼的例子。 –

回答

1
Any ideas? 

是,嘗試在您使用.NET類,只是作爲對編程不依賴於Batch

反正使用process2.WaitForExit()您正在等待進程退出,這就是程序死機,程序線程在等待的原因。

一個簡單的方法是這樣的:

Dim process2 As Process With ... 
    ... 

    process2.Start() 
    While Not process2.HasExited 
     Application.doevents() 
    End While 

    ' Here the process has exited, 
    ' Then add your code here. 

已存在更好的方法來做到這一點(多線程,BackgroundWorker的),但因爲你在這門語言都是新的,這取決於一個簡單的語言爲Batch那麼我會建議你使用簡單的東西,但在多線程技術中引入是一個好主意。 PS:請原諒我的英語。