【问题标题】:To kill batch process which running in backend杀死在后端运行的批处理
【发布时间】:2013-10-22 06:01:38
【问题描述】:

最近在开发用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 窗口...

【问题讨论】:

    标签: windows vb.net batch-file


    【解决方案1】:

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

    在过程外声明过程:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多