如何将命令发送到从我的应用程序启动的正在运行的cmd应用程序?

时间:2018-05-12 22:01:35

标签: vb.net

我的应用程序从命令行启动openvpn,如下所示:

Dim cmdInfo As New ProcessStartInfo("cmd", "/K openvpn.exe " & Chr(34) & ovpnPath & Chr(34))
cmdInfo.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(cmdInfo)

这很好但我无法优雅地关闭openvpn。我可以杀死进程但是它不会删除路由等。

现在我正在寻找一种方法将Ctrl + C或F4发送到隐藏的cmd窗口以使OpenVPN退出。

1 个答案:

答案 0 :(得分:0)

Dim opwnfilepath As String = "Opvn file path"

      Dim Params As String = " --config """ & opwnfilepath & """
            Dim p As New ProcessStartInfo
            p.FileName = "C:\Program Files\OpenVPN\bin\openvpn.exe" ' add here openvpn.exe path 
            p.Arguments = Params
            p.WindowStyle = ProcessWindowStyle.Hidden

            Process.Start(p)

我使用这段代码工作得很好。如果需要显示cmd中发生的更改ProcessWindowStyle.Hidden更改为ProcessWindowStyle.Normal

对不起,我理解错了:D

如果你在任务管理器中关闭openvpn,网络就会回到你自己的

试试这段代码

   Dim arrProcessx() As Process = System.Diagnostics.Process.GetProcessesByName("openvpn")

        For Each psx As Process In arrProcessx
            psx.Kill()
        Next

为我测试了工作。