public string InvokeScript(string funcName, bool isEval = false) { try { if (!isEval) { funcName = JointMethodStr(funcName, null); } ThreadQueue tq = new ThreadQueue( new Task <Task <JavascriptResponse> >(funcEval => { return(WebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(funcEval.ToString())); }, funcName), this); tq.Start(); tq.Wait(); if (null != tq.Result) { if (null != tq.Result.Result) { if (null != tq.Result.Result.Result) { return(tq.Result.Result.Result.ToString()); } } } return(null); } catch (Exception ex) { throw ex; } }
/// <summary> /// 获取当前页面Dom树 /// </summary> private HTMLDocument GetDocument() { if (!IsChromeLoaded || !IsDocumentLoaded) { return(new HTMLDocument()); } Task <string> returnStr = null; IHTMLDocument2 document = (IHTMLDocument2)(new HTMLDocumentClass()); this.Dispatcher.Invoke(() => { returnStr = WebBrowser.GetBrowser().MainFrame.GetSourceAsync(); }); var waiter = returnStr.GetAwaiter(); waiter.OnCompleted(() => { this._isDocumentGeted = true; document.write(returnStr.Result.ToString()); }); return((HTMLDocument)document); }
private void ShowDevTools() { WebBrowser.GetBrowser().GetHost().ShowDevTools(); Keyboard.ClearFocus(); }