1

私は Web ブラウザ コントロールを使用しており、document.InvokeScript を使用して Javascript で関数を呼び出そうとしています。

Process.Exited のイベント ハンドラーを呼び出す部分を除いて、コード内のどこでも機能します。

 //this function is being called from Javascript code.
public void Open()
{

    //****FROM HERE TO......****

    Object[] param = new Object[2];
    param[0] = "play";
    param[1] = "playDisabled";
    webBrowser1.Document.InvokeScript("disable", param);

    param[0] = "playDisabled";
    param[1] = "Playing";
    webBrowser1.Document.InvokeScript("setText", param);

    //****THERE, INVOKESCRIPT WORKS....****

    //there i open exe file...
    Process GameLaunch = new Process();
    GameLaunch.StartInfo.FileName = ExtractPath + gameFile;
    GameLaunch.StartInfo.Arguments = ExtractPath + gameFile;
    GameLaunch.EnableRaisingEvents = true;

    //after its closed i call GameLaunch_Exited method.
    GameLaunch.Exited += new EventHandler(GameLaunch_Exited);
    GameLaunch.Start();

}
void GameLaunch_Exited(object sender, EventArgs e)
{

   InvokeScript("btnReset", "#playDisabled");
}
private object InvokeScript(string name, params object[] args)
{
    //here it fires an error.
    return webBrowser1.Document.InvokeScript(name, args);
}
        private void button1_Click_1(object sender, EventArgs e)
        {
        InvokeScript("btnReset", "#playDisabled");
        string output = "";
        int i = 0;
        foreach (HtmlElement element in webBrowser1.Document.GetElementsByTagName("a"))
        {
            i++;
            output += i+". Element: id: "+ element.Id + ", inner html: "+ element.InnerHtml + Environment.NewLine;
        }
       MessageBox.Show(output);
    }

このコードから得られるのは、指定されたキャストが無効です。

以下にいくつかの画面を示します。

ところで、ボタンクリックハンドラーから呼び出すと、InvokeScriptメソッドが機能します。また、Exited Handler から呼び出された場合はそうではありません。

私は本当に混乱しています。

ここに画像の説明を入力

そしてエラー自体:

ここに画像の説明を入力

私のJSを見たい方へ。

function btnReset(id){
  $(document).ready(function(){
     $(id).removeClass("disabled");
     $(id).html("Start");
     $(id).attr("id", "play");
 });
 }

編集: 例外メッセージ:

タイプ 'System.InvalidCastException' の未処理の例外が System.Windows.Forms.dll で発生しました {"指定されたキャストは無効です。"}

追加情報: 指定されたキャストは無効です。

助けてくれてありがとう。

-乾杯

-ニック。

4

0 に答える 0