2013-10-19 2 views
0

Visual Basic 내에서 일괄 처리 파일을 실행하는 것에 대해 몇 가지 질문이 있습니다.Visual Basic에서 일괄 처리 파일을 실행하십시오.

VB에서 작성된 단추가 Windows 양식에 있으며 버튼에 대한 클릭 이벤트가 있습니다.

예제 코드 : 사용자가 클릭 버튼, 숨겨진 배치 파일 (.BAT) 끝을 다시 실행할 때 코드 위

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 

의미합니다.

내 문제는 사용자가이 btn을 클릭하는 동안 전체 응용 프로그램 창이 멈추고 작업 표시 줄을 최소화 할 수 없다는 것입니다.

배치 파일을 실행할 수있는 방법이 있습니까? 일부 반환 값을 받으면 완료되었음을 알려주십시오. 또는 어떤 상태입니까? 왜냐하면 나는 또한 진행 막대를 보여주기를 원하기 때문입니다.

아이디어가 있으십니까? 미리 감사드립니다.

+2

'process2.WaitForExit'이 원인 일 수 있다고 생각하십니까? – Plutonix

+0

Bat 파일은 무엇이고, 수동으로 실행하면 콘솔에 아무 것도 출력하지 않으므로 수행하려는 작업의 예를 게시하십시오. –

답변

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 같은 간단한 언어에 따라 이후 나는 당신을 추천합니다 :

쉬운 해결책은 이것이다 쉬운 일을 사용하기는하지만 멀티 스레딩 기술을 도입하는 것은 좋은 생각입니다.

추신 : 내 영어를 용서해주십시오.

관련 문제