Как запустить WebBrowser RaiseEvent в консольном приложении c #? - PullRequest
0 голосов
/ 18 сентября 2018

Так что в основном я пытаюсь запустить RaiseEvent WebBrowser из консольного приложения, но он не работает.В проекте WinForms это работает хорошо, поэтому мне просто интересно, что мне нужно сделать, чтобы это работало в консольном приложении.Это вообще возможно?

Вот как я создаю поток для моего WB

 private static Thread runBrowserThread(int mCandidatePosition)
        {
            var wbThread =  new Thread(() => {              
                mClient = new WebClient();
                mainWebBrowser.ScriptErrorsSuppressed = true;
                mainWebBrowser.AllowNavigation = true; 
                mainWebBrowser.DocumentCompleted += MainWebBrowser_DocumentCompleted;
                mainWebBrowser.Navigate(new Uri(xxx));
                Application.Run();
            });
            wbThread.SetApartmentState(ApartmentState.STA);
            return wbThread;
        }

, и вот как я пытаюсь это сделать:

        HtmlElement selectType = gDoc.GetElementById("xxx");
        selectType.RaiseEvent("onchange");

Приведенный выше код хорошо работает в WinFormsпроект, но в консольном приложении ничего не происходит.Кроме того, InvokeScript работает хорошо, так что это немного странно для меня.

1 Ответ

0 голосов
/ 18 сентября 2018

Вы должны использовать InvokeMember() метод HtmlElement:

 HtmlElement selectType = gDoc.GetElementById("xxx");
 selectType.InvokeMember("change");
...