示例#1
0
 public Form1()
 {
     _blinkBrowser = new BlinkBrowser()
     {
         Dock = DockStyle.Fill
     };
     InitializeComponent();
     this.Load += Form1_Load;
 }
示例#2
0
        public static object ToValue(this long value, BlinkBrowser miniblink, IntPtr es)
        {
            if (value == 0)
            {
                return(null);
            }

            wkeJSType type = BlinkBrowserPInvoke.jsTypeOf(value);

            switch (type)
            {
            case wkeJSType.JSTYPE_NULL:
            case wkeJSType.JSTYPE_UNDEFINED:
                return(null);

            case wkeJSType.JSTYPE_NUMBER:
                return(BlinkBrowserPInvoke.jsToDouble(es, value));

            case wkeJSType.JSTYPE_BOOLEAN:
                return(BlinkBrowserPInvoke.jsToBoolean(es, value));

            case wkeJSType.JSTYPE_STRING:
                //string strvalue = string.Empty;
                //strvalue = BlinkBrowserPInvoke.jsToTempStringW(es, value).ToStringW();
                return(BlinkBrowserPInvoke.jsToTempStringW(es, value).ToStringW());

            case wkeJSType.JSTYPE_FUNCTION:
                return(new JsFunc(new JsFuncWapper(miniblink, value, es).Call));

            case wkeJSType.JSTYPE_ARRAY:
                var len   = BlinkBrowserPInvoke.jsGetLength(es, value);
                var array = new object[len];
                for (var i = 0; i < array.Length; i++)
                {
                    array[i] = BlinkBrowserPInvoke.jsGetAt(es, value, i).ToValue(miniblink, es);
                }

                return(array);

            case wkeJSType.JSTYPE_OBJECT:
                var ptr    = BlinkBrowserPInvoke.jsGetKeys(es, value);
                var jskeys = (jsKeys)Marshal.PtrToStructure(ptr, typeof(jsKeys));
                var keys   = Utils.PtrToStringArray(jskeys.keys, jskeys.length);
                var exp    = new ExpandoObject();
                var map    = (IDictionary <string, object>)exp;
                foreach (var k in keys)
                {
                    map.Add(k, BlinkBrowserPInvoke.jsGet(es, value, k).ToValue(miniblink, es));
                }

                return(map);

            default:
                throw new NotSupportedException();
            }
        }
示例#3
0
 internal object OnFunc(BlinkBrowser miniblink, object[] param)
 {
     return(_func(new NetFuncContext
     {
         Name = Name,
         Miniblink = miniblink,
         State = _state,
         Paramters = param ?? new object[0]
     }));
 }
示例#4
0
        public MainForm()
        {
            InitializeComponent();
            this.WindowState   = FormWindowState.Maximized;
            blinkBrowser1      = new BlinkBrowser();
            blinkBrowser1.Dock = DockStyle.Fill;
            this.Controls.Add(this.blinkBrowser1);
            blinkBrowser1.GlobalObjectJs       = this;
            this.blinkBrowser1.OnDownloadFile += BlinkBrowser1_OnDownloadFile;

            this.Load       += Form1_Load;
            this.FormClosed += Form1_FormClosed;
        }
示例#5
0
        private void TabForm_Load(object sender, EventArgs e)
        {
            this.Show();
            List <ComboBoxVo> lists = GetTuijian();

            this.ComboBoxTuijian.DataSource    = lists;
            this.ComboBoxTuijian.DisplayMember = "keyName";
            this.ComboBoxTuijian.ValueMember   = "keyValue";
            tabControl1.MouseClick            -= TabControl_MouseClick;
            tabControl1.MouseClick            += TabControl_MouseClick;
            BlinkBrowser browser = CreateNewTab();

            browser.Url = textBox1.Text;
        }
        private BlinkBrowser CreateNewTab()
        {
            var tabPage = new System.Windows.Forms.TabPage()
            {
                Text = ""
            };

            BlinkBrowser browser = new BlinkBrowser();

            tabPage.Controls.Add(browser);
            browser.OnCreateViewEvent     += Browser_OnCreateViewEvent;
            browser.OnUrlChangeCall       += Browser_OnUrlChangeCall;
            browser.DocumentReadyCallback += Browser_DocumentReadyCallback;
            browser.OnDownloadFile        += Browser_OnDownloadFile;

            browser.OnTitleChangeCall += (title) =>
            {
                tabPage.Invoke((EventHandler) delegate
                {
                    tabPage.Text = title;
                });
            };
            browser.OnUrlChange2Call += (nowUrl) =>
            {
                tabPage.Invoke((EventHandler) delegate
                {
                    if (BrowserTab.SelectedTab == tabPage)
                    {
                        Url = nowUrl;

                        /*textBox1.Invoke((EventHandler)delegate
                         * {
                         *  textBox1.Text = nowUrl;
                         * });*/
                    }
                });
            };
            browser.Dock = System.Windows.Forms.DockStyle.Fill;
            BrowserTab.TabPages.Add(tabPage);
            BrowserTab.SelectTab(tabPage);

            return(browser);
        }
        /// <summary>
        /// 初始化插件
        /// </summary>
        /// <param name="mainWindow"></param>
        public void Initialize(Grid plugsGrid)
        {
            this.plugsGrid = plugsGrid;
            Grid             grid   = Content as Grid;
            DependencyObject parent = grid.Parent;

            if (parent != null)
            {
                parent.SetValue(ContentPresenter.ContentProperty, null);
            }
            plugsGrid.Children.Add(grid);
            Browser = CreateNewTab();

            BrowserGrid.Visibility  = Visibility.Visible;
            FileListGrid.Visibility = Visibility.Hidden;

            FileDataListGrid.DataContext = fileDataLists;
            // 初始化全局组件后启动浏览器
            InitializeChromium();
        }
示例#8
0
 public Form1()
 {
     InitializeComponent();
     blinkBrowser1.GlobalObjectJs = this;
     mb = blinkBrowser1;
 }
示例#9
0
        private void TabForm_Load(object sender, EventArgs e)
        {
            BlinkBrowser browser = CreateNewTab();

            browser.Url = textBox1.Text;
        }
示例#10
0
 public frmMain()
 {
     InitializeComponent();
     mb = blinkBrowser1;
     blinkBrowser1.GlobalObjectJs = new MBApiHelper(blinkBrowser1);
 }
示例#11
0
 internal JsFuncWapper(BlinkBrowser control, long jsvalue, IntPtr es)
 {
     _miniblink = control;
     _name      = "func" + Guid.NewGuid().ToString().Replace("-", "");
     BlinkBrowserPInvoke.jsSetGlobal(es, _name, jsvalue);
 }
示例#12
0
        public static long ToJsValue(this object obj, BlinkBrowser miniblink, IntPtr es)
        {
            if (obj == null)
            {
                return(BlinkBrowserPInvoke.jsUndefined());
            }
            if (obj is int)
            {
                return(BlinkBrowserPInvoke.jsInt((int)obj));
            }
            if (obj is bool)
            {
                return(BlinkBrowserPInvoke.jsBoolean((bool)obj));
            }
            if (obj is double)
            {
                return(BlinkBrowserPInvoke.jsDouble((double)obj));
            }
            if (obj is decimal)
            {
                var dec = (decimal)obj;
                if (dec.ToString().Contains("."))
                {
                    return(ToJsValue(Convert.ToDouble(dec.ToString()), miniblink, es));
                }
                else
                {
                    return(ToJsValue(Convert.ToInt32(dec.ToString()), miniblink, es));
                }
            }
            if (obj is long)
            {
                return(ToJsValue(obj.ToString(), miniblink, es));
            }
            if (obj is float)
            {
                return(BlinkBrowserPInvoke.jsFloat((float)obj));
            }
            if (obj is DateTime)
            {
                return(BlinkBrowserPInvoke.jsDouble(((DateTime)obj).ToLong()));
            }
            if (obj is string)
            {
                return(BlinkBrowserPInvoke.jsString(es, obj.ToString()));
            }
            if (obj is IEnumerable)
            {
                var list = new List <object>();
                foreach (var item in (IEnumerable)obj)
                {
                    list.Add(item);
                }
                var array = BlinkBrowserPInvoke.jsEmptyArray(es);
                BlinkBrowserPInvoke.jsSetLength(es, array, list.Count);
                for (var i = 0; i < list.Count; i++)
                {
                    BlinkBrowserPInvoke.jsSetAt(es, array, i, list[i].ToJsValue(miniblink, es));
                }

                return(array);
            }

            if (obj is Delegate)
            {
                var func    = (Delegate)obj;
                var funcptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(jsData)));
                var jsfunc  = new jsCallAsFunctionCallback(
                    (fes, fobj, fargs, fcount) =>
                {
                    if (func is TempNetFunc)
                    {
                        var fps = new List <object>();
                        for (var i = 0; i < fcount; i++)
                        {
                            fps.Add(BlinkBrowserPInvoke.jsArg(fes, i).ToValue(miniblink, fes));
                        }

                        return(((TempNetFunc)func)(fps.ToArray()).ToJsValue(miniblink, fes));
                    }
                    else
                    {
                        var fps = new object[func.Method.GetParameters().Length];
                        for (var i = 0; i < fcount && i < fps.Length; i++)
                        {
                            fps[i] = BlinkBrowserPInvoke.jsArg(fes, i).ToValue(miniblink, fes);
                        }

                        var rs = func.Method.Invoke(func.Target, fps);
                        return(rs.ToJsValue(miniblink, fes));
                    }
                });
                var funcdata = new jsData
                {
                    typeName       = "function",
                    callAsFunction = jsfunc,
                    finalize       = FunctionFinalize
                };
                _keepref.Add(funcptr.ToInt64(), funcdata);
                Marshal.StructureToPtr(funcdata, funcptr, false);
                return(BlinkBrowserPInvoke.jsFunction(es, funcptr));
            }

            var jsobj = BlinkBrowserPInvoke.jsEmptyObject(es);
            var ps    = obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

            foreach (var p in ps)
            {
                var v = p.GetValue(obj, null);
                if (v == null)
                {
                    continue;
                }
                BlinkBrowserPInvoke.jsSet(es, jsobj, p.Name, v.ToJsValue(miniblink, es));
            }

            return(jsobj);
        }
示例#13
0
 public MBApiHelper(BlinkBrowser mb) : base()
 {
     //MB = mb;
     BH = new BookHelper();
 }