1

我有一个程序用于一些相对不称职的人,该程序旨在帮助他们完成完全平凡而简单的计算机使用任务。基本上发生的情况是,他们必须为互联网启动 Verizon 卡,然后建立 VPN 连接,启动传输工具,并登录调度用于将工作订单分配给他们的计算机的应用程序。我目前正在编写的工具有一个逐步按钮弹出窗口,告诉他们该做什么。我现在正在添加额外的功能,这将使这个过程变得更加愚蠢,这样如果出现故障,他们就不会在外地时惊慌失措。我正在做的第一个更新如下:

第一步启动 VZAccess Manager,然后在启动时将按钮变为绿色。我添加了测试连接是否正常的代码;当连接建立时,它会将按钮变为绿色,并显示连接已建立的弹出窗口,当连接断开时,按钮变为红色并显示连接断开的弹出窗口,让他们知道这是连接问题。现在我想做的是使用同样的方法来检测 VPN 连接是否正常。这是我现在使用的代码:

(实际功能测试连接)

private void AvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
    {
        if (e.IsAvailable)
        {
            Step1.BackColor = Color.Lime;
            MessageBox.Show("YIPPIE!!!!" + "\n" + "VZWireless connection reestablished!");
        }
        else
        {
            Step1.BackColor = Color.LightCoral;
            MessageBox.Show("OH NOES!!!!" + "\n" + "VZWireless connection disconnected!");
        }
    }

(按钮点击功能:1为VZ卡,2为VPN)

private void Step1_Click(object sender, EventArgs e)
    {
        NetworkChange.NetworkAvailabilityChanged += AvailabilityChanged;
        Step1.Enabled = false;
        Step1.BackColor = Color.LightCoral;
        Step1.Text = "Please Wait...";
        Task.Factory.StartNew(() =>
        {
            string strVsWireless = "C:\\Program Files (x86)\\Verizon Wireless\\VZAccess Manager\\VZAccess Manager.exe";
            Process VsWireless = Process.Start(strVsWireless);
            VsWireless.WaitForInputIdle();
        })
        .ContinueWith(t =>
        {
            Step1.BackColor = Color.Lime;
            Step1.Text = "VZAccess Manager";
            Step2.Visible = true;
        }, TaskScheduler.FromCurrentSynchronizationContext());
    }

    private void Step2_Click(object sender, EventArgs e)
    {
        Step2.Enabled = false;
        Step2.BackColor = Color.LightCoral;
        Step2.Text = "Please Wait...";
        Task.Factory.StartNew(() =>
        {
            string strCisco = "C:\\Program Files (x86)\\Cisco\\Cisco AnyConnect VPN Client\\vpnui.exe";
            Process Cisco = Process.Start(strCisco);
            Cisco.WaitForInputIdle();
        })
        .ContinueWith(t =>
        {
            Step2.BackColor = Color.Lime;
            Step2.Text = "Cisco VPN Client";
            Step3.Visible = true;
        }, TaskScheduler.FromCurrentSynchronizationContext());
    }

所以我试图弄清楚如何使用我当前的功能来扩展在 vpn 连接上的使用,或者完全为 vpn 连接创建另一个功能。我真的不在乎哪个,但我会欣赏效率。我想不通的是如何专门检测 VPN 连接。VPN 连接被命名为“Cisco AnyConnection VPN Client”。关于如何像监控无线卡的连接一样主动监控此连接有什么想法吗?附带说明一下,有什么方法可以测试它是否是第一次建立连接,以便它在第一次连接时不显示警报框,只有在它首先断开连接时才显示?

4

0 回答 0