1

私は、比較的無能な人々に使用しているプログラムを持っています。このプログラムは、コンピューターの使用に関する完全に日常的で単純なタスクを介して手で保持するように設計されています。基本的に何が起こるかというと、彼らはインターネット用の Verizon カードを開始し、次に VPN 接続を確立し、転送ツールを開始し、作業指示書を自分のコンピューターに割り当てるためにディスパッチするアプリケーションにログインする必要があります。私が現在書いているツールには、何をすべきかを指示するステップバイステップのボタンポップアップがあります。私は今、このプロセスをさらに愚かにする追加機能を追加しているので、何かが失敗した場合にフィールドに出たときにびっくりすることはありません. 私が行っている最初の更新は次のとおりです。

ステップ 1 で 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