在Visual Studio中监视网络连接

时间:2013-06-17 19:54:35

标签: c# .net visual-studio-2010

我有一个程序,我正在一些相对无能的人使用,旨在通过完全平凡和简单的计算机使用任务手持他们。基本上发生的事情是他们必须为互联网启动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”。我是如何主动监控这种连接的,就像我正在监控无线网卡的连接一样?在旁注中,有没有什么方法可以测试它是否是第一次建立连接,以便它第一次连接时不显示警告框,只有在它首先断开连接时才会显示?

0 个答案:

没有答案