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