0

簡単に言うと、これは WebBrowser コントロールを備えた Windows フォーム アプリケーションに関するものです。アプリケーションは Web サイトを開き、ユーザー名とパスワードを入力してログインし、javascript を実行して vpn クライアント (exe) を起動します。VPN クライアントが正常に起動したら、アプリケーションを終了する必要があります。前半は順調に進んでいます。

vpn クライアントが実行されているかどうかを確認したいのですが、実行されている場合はアプリケーションを閉じ、そうでない場合は exe が開始するのを待ちます。

private void LaunchJS()
        {
            HtmlDocument doc = webBrowser1.Document;
            Object js = doc.InvokeScript("launchJS");
            label1.Text = "complete";
        }

.

if (label1.Text == ("complete"))
            {
            bool prc = false;
            while (!prc)
            {
                foreach (Process clsProcess in Process.GetProcesses())
                {
                    if (clsProcess.ProcessName.Contains("JS_plugin"))
                    {
                        prc = true;
                        Application.Exit();
                    }
                }
            }
            }

私が経験している問題は、コードの 2 番目の部分 (チェック プロセス) を有効にすると、JavaScript の起動が失敗することです。Java スクリプトが実行されず、プログラムが起動せず、チェック プロセスが無限ループに陥ります。

どんな助けでも大歓迎です!

4

1 に答える 1

0

別のスレッドでプロセス チェックを実行すると、問題が解決しました。

private void GetPRo()
{
    if (label1.Text == ("complete"))
    {
        bool prc = false;
        while (!prc)
        {
            foreach (Process clsProcess in Process.GetProcesses())
            {
                if (clsProcess.ProcessName.Contains("JS_plugin"))
                {
                    prc = true;
                    Application.Exit();
                }
            }
        }
    } 
}

.

Thread CloseApp = new Thread(new ThreadStart(GetPro));
CloseApp.Start();
于 2012-05-09T07:10:03.990 に答える