コード例 #1
0
ファイル: BrowserTabView.xaml.cs プロジェクト: alex-yqli/coby
        public void ParseInnerHTML()
        {
            ParseHtmlHelper m_ParseHtmlHelper = new ParseHtmlHelper((string)MainWindow.strInnerHtml);
            m_ParseHtmlHelper.ExecuteAllRegex();
            orderInfos.Clear();
            int j = 0;

            for (int i = 0; i < m_ParseHtmlHelper.RegexMatchs[2].Count; i++)   /* SubOrderID Num */
            {
                string m_TradeID = m_ParseHtmlHelper.RegexMatchs[0][j].Groups[1].Captures[0].Value;
                string m_Time_stamp = m_ParseHtmlHelper.RegexMatchs[1][j].Groups[1].Captures[0].Value;
                string m_Item = m_ParseHtmlHelper.RegexMatchs[3][i].Groups[2].Captures[0].Value;
                m_Item = m_Item.Replace("\r", "");
                string m_Price = m_ParseHtmlHelper.RegexMatchs[4][i].Groups[1].Captures[0].Value;
                string m_Num = m_ParseHtmlHelper.RegexMatchs[5][i].Groups[1].Captures[0].Value;
                string m_Trouble = m_ParseHtmlHelper.RegexMatchs[6][i].Groups[0].Captures[0].Value;
                string m_Contact = m_ParseHtmlHelper.RegexMatchs[7][i].Groups[1].Captures[0].Value;
                string m_Trade_status = m_ParseHtmlHelper.RegexMatchs[8][i].Groups[2].Captures[0].Value;  /* need handle */
                m_Trade_status = m_Trade_status.Replace("\r", "");
                string m_Order_price = m_ParseHtmlHelper.RegexMatchs[9][i].Groups[1].Captures[0].Value;
                string m_Remark = m_ParseHtmlHelper.RegexMatchs[10][i].Groups[0].Captures[0].Value;
                string m_Message = m_ParseHtmlHelper.RegexMatchs[11][i].Groups[1].Captures[0].Value;

                if (m_Trade_status.Contains("</strong>"))
                    m_Trade_status = m_Trade_status.Replace("</strong>", "");

                orderInfos.Add(new OrderInfo()
                {
                    TradeID = m_ParseHtmlHelper.RegexMatchs[0][j].Groups[1].Captures[0].Value,
                    Time_stamp = m_ParseHtmlHelper.RegexMatchs[1][j].Groups[1].Captures[0].Value,
                    Item = m_Item,
                    Price = m_ParseHtmlHelper.RegexMatchs[4][i].Groups[1].Captures[0].Value,
                    Num = m_ParseHtmlHelper.RegexMatchs[5][i].Groups[1].Captures[0].Value,
                    Trouble = m_ParseHtmlHelper.RegexMatchs[6][i].Groups[0].Captures[0].Value,
                    Contact = m_ParseHtmlHelper.RegexMatchs[7][i].Groups[1].Captures[0].Value,
                    Trade_status = m_Trade_status,
                    Order_price = m_ParseHtmlHelper.RegexMatchs[9][i].Groups[1].Captures[0].Value,
                    Remark = m_ParseHtmlHelper.RegexMatchs[10][i].Groups[0].Captures[0].Value,
                    Message = m_Message
               });

                if (m_ParseHtmlHelper.RegexMatchs[0][j].Groups[1].Captures[0].Value.CompareTo(
                        m_ParseHtmlHelper.RegexMatchs[2][i].Groups[1].Captures[0].Value) != 0)
                    j++;
            }

            view.Source = orderInfos;

            this.OrderList.DataContext = view;
        }
コード例 #2
0
ファイル: BrowserTabViewModel.cs プロジェクト: alex-yqli/coby
        private async void GetInnerHTML()
        {
            try
            {
                var response = await webBrowser.EvaluateScriptAsync("myBytes=window.document.body.innerHTML;");
                if (response.Success && response.Result is IJavascriptCallback)
                {
                    response = await ((IJavascriptCallback)response.Result).ExecuteAsync("This is a callback from EvaluateJavaScript");
                }

                MainWindow.strInnerHtml = (string)(response.Success ? (response.Result ?? "null") : response.Message);
                ParseHtmlHelper m_ParseHtmlHelper = new ParseHtmlHelper((string)MainWindow.strInnerHtml);
                m_ParseHtmlHelper.GetMessageUrl();

                for (int i = 0; i < m_ParseHtmlHelper.MessageUrlMatchs.Count; i++)
                {
                    string m_Message = m_ParseHtmlHelper.MessageUrlMatchs[i].Groups[1].Captures[0].Value;  /* need handle */
                    string ifrm_name = string.Format(@"frm{0}", i);
                    string JsCmd = "document.body.insertAdjacentHTML(\"beforeEnd\", \"<iframe width='400' height='50' id='" + ifrm_name + "' src='" + m_Message + "'/>\");";
                    response = await  webBrowser.EvaluateScriptAsync(JsCmd);
                    Random ran = new Random(); /* 搞个随机数防检测 */
                    int RandKey = ran.Next(200, 1500);
                    Thread.Sleep(RandKey);
                    JsCmd = "var iFrame = document.getElementById('" + ifrm_name + "');var iFrameElement = iFrame.contentWindow.document.body.innerHTML;MyByte=iFrameElement;";
                    response = await webBrowser.EvaluateScriptAsync(JsCmd);
                    MainWindow.strMessageHtml += (string)(response.Success ? (response.Result ?? "null") : response.Message);
                }

                response = await webBrowser.EvaluateScriptAsync("myBytes=window.document.body.innerHTML;");
                if (response.Success && response.Result is IJavascriptCallback)
                {
                    response = await ((IJavascriptCallback)response.Result).ExecuteAsync("This is a callback from EvaluateJavaScript");
                }

                MainWindow.strInnerHtml = (string)(response.Success ? (response.Result ?? "null") : response.Message);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error while evaluating Javascript: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }