2

最近开发使用VB,就像从一个洞跳到另一个......

这是我的问题。我正在使用Visual Basic,开始按钮单击-> 在后端运行批处理文件,用户看不到它,并且还有一个按钮'Abort',当它被单击时,进程(批处理文件在后面运行end) 应该被杀死。

但是,事实并非如此。

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() 关闭批处理文件窗口,它将停止。但我不希望向用户弹出 CMD 窗口...

4

1 回答 1

2

你已经设置了不必要的东西来隐藏窗口,试试这个:

在过程之外声明过程:

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
于 2013-10-22T06:16:26.740 回答