/// <summary>
        /// Gets the identifiers of all existing frames.
        /// </summary>
        public long[] GetFrameIdentifiers()
        {
            CefBrowser browser = BrowserObject;

            if (browser == null)
            {
                return(new long[0]);
            }

            long count       = browser.FrameCount << 1;
            var  identifiers = new long[count];

            browser.GetFrameIdentifiers(ref count, ref identifiers);
            GC.KeepAlive(browser);
            return(identifiers);
        }
示例#2
0
        protected override bool OnProcessMessageReceived(CefBrowser browser, CefProcessId sourceProcess, CefProcessMessage message)
        {
            string[] items = message.Name.Split(new char[] { '|' });
            if (items.Length == 0)
            {
                return(false);
            }

            switch (items[0])
            {
            case "GetElementValue":
            {
                string elementID = items[1];
                long[] frameIDs  = browser.GetFrameIdentifiers();
                foreach (long frameID in frameIDs)
                {
                    CefFrame frame = browser.GetFrame(frameID);
                    if (frame == null)
                    {
                        continue;
                    }
                    frame.VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID));
                }
                browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID));
                return(true);
            }

            case "SetElementValue":
            {
                string elementID    = items[1];
                string elementValue = items[2];
                long[] frameIDs     = browser.GetFrameIdentifiers();
                foreach (long frameID in frameIDs)
                {
                    CefFrame frame = browser.GetFrame(frameID);
                    if (frame == null)
                    {
                        continue;
                    }
                    frame.VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsGetElementValue, elementID, elementValue));
                }
                browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsSetElementValue, elementID, elementValue));
                return(true);
            }

            case "EvaluateScript":
            {
                CefV8Value     value = CefV8Value.CreateString("t");
                CefV8Exception exp;
                browser.GetMainFrame().V8Context.TryEval(items[1], out value, out exp);
                Global.JsEvaResult = null;
                if (value.IsString)
                {
                    Global.JsEvaResult = value.GetStringValue();
                }
                if (value.IsInt)
                {
                    Global.JsEvaResult = value.GetIntValue();
                }
                if (value.IsDouble)
                {
                    Global.JsEvaResult = value.GetDoubleValue();
                }
                if (value.IsBool)
                {
                    Global.JsEvaResult = value.GetBoolValue();
                }
                if (value.IsDate)
                {
                    Global.JsEvaResult = value.GetDateValue();
                }
                Global.flag = true;
                return(true);
            }

            case "AppendListener":
            {
                CwbBusinStyle cbStyle = CwbBusinStyle.bsAddElementEvent;
                if (items.Length > 2)
                {
                    cbStyle = CwbBusinStyle.bsAttachElementEvent;
                }
                string elementID = items[1];
                long[] frameIDs  = browser.GetFrameIdentifiers();
                foreach (long frameID in frameIDs)
                {
                    CefFrame frame = browser.GetFrame(frameID);
                    if (frame == null)
                    {
                        continue;
                    }
                    frame.VisitDom(new CwbDOMVisitor(browser, cbStyle, webBrowser.getEventListener(elementID)));
                }
                browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, cbStyle, webBrowser.getEventListener(elementID)));
                return(true);
            }

            case "GetDocument":
            {
                browser.GetMainFrame().VisitDom(new CwbDOMVisitor(browser, CwbBusinStyle.bsVisitDocument, ""));
                return(true);
            }
            }
            return(false);
        }