2013-10-22 3 views
2

최근 VB에서 VB를 개발하는 중 ....백엔드에서 실행되는 일괄 처리를 종료하려면

여기가 내 문제입니다. 나는 Visual Basic을 사용하여 시작 버튼을 클릭하고 백엔드에서 배치 파일을 실행하며 사용자는 그것을 볼 수 없으며 버튼 하나가있을 때 '중단'을 클릭 할 때 프로세스 (배치 파일이 다시 실행 됨)가 발생합니다. 끝)을 죽여야합니다.

그러나 그렇지 않습니다.

Dim pathtobatfile As String 
    pathtobatfile = mainPath & "TEMP\extract.bat" 
    Dim psi As New ProcessStartInfo(pathtobatfile) 
    psi.RedirectStandardError = True 
    psi.RedirectStandardOutput = True 
    psi.CreateNoWindow = True 
    psi.WindowStyle = ProcessWindowStyle.hidden 

    psi.UseShellExecute = False 
    process= process.Start(psi) 

는 위 과정

process.CloseMainWindow() 
    process.Kill() 
    process.Close() 

모든 작동하지 않았다 시작 설정하지만, 'psi.CreateNoWindow = false'로 설정하고있는 경우 process.CloseMainWindow()를 사용하여 배치 파일 창을 닫습니다, 그것은 멈출 것이다. 당신은 창을 숨길 불필요한 일을 설정 한

답변

2

하지만 사용자에게 CMD 창 팝업을 원하는 돈`t ...,이 시도 :

:

이 절차 이외의 과정을 선언 그런 다음

Private p As New Process With {.StartInfo = New ProcessStartInfo With { _ 
      .FileName = string.empty, _ 
      .RedirectStandardError = True, _ 
      .RedirectStandardOutput = True, _ 
      .CreateNoWindow = True, _ 
      .UseShellExecute = False _ 
}} 
... :

Private Sub StartProcess() 
    p.Filename = mainPath & "TEMP\extract.bat" 
    p.Start() 
End Sub 

Private Sub KillProcess() 
    If Not p.HasExited() Then 
     p.Kill() 
    End If 
End Sub 
관련 문제