Пример #1
0
        public void OpenUrl(string url)
        {
            CustomChrominWebBrowser browser = new CustomChrominWebBrowser(url);

            browser.LifeSpanHandler = LifeSpanHandler;

            var page = new ChrominViewModel(browser);

            browser.RequestHandler  = new CustomRequestHandler();
            browser.LoadHandler     = new CustomLoadHandler(page);
            browser.MenuHandler     = new CustomMenuHandler();
            browser.DownloadHandler = DownloadHandler;
            //browser.StatusMessage += Browser_StatusMessage;

            //browser.CommandBindings.Add(new CommandBinding(CustomDownloadHandler.DownloadUpdated,new ExecutedRoutedEventHandler(DownloadUpdated)));//,new CanExecuteRoutedEventHandler(CanDownloadUpdated)
            page.IsSelected = true;
            PreLoad         = page;
            if (PageList.Count > 0)
            {
                PageList.Insert(GetCurentPageIndex() + 1, page);
            }
            else
            {
                PageList.Add(page);
            }
        }
Пример #2
0
        /// <summary>
        /// 从TaskVIewList中移除已完成Task的对象
        /// </summary>
        /// <param name="ce"></param>
        public void RemoveTaskBrowserView(CustomChrominWebBrowser ce)
        {
            ChrominViewModel target = null;

            foreach (var item in TaskList)
            {
                if (item.WebBrowser == ce)
                {
                    target = item; break;
                }
            }
            if (target != null)
            {
                App.Current.Dispatcher.Invoke(() => { TaskList.Remove(target); });
            }
        }
Пример #3
0
        public void CommandExcter(object pra)
        {
            if (pra is object[])
            {
                object[]         cmds = pra as object[];
                string           cmd  = cmds[0] as string;
                ChrominViewModel cvm  = cmds[1] as ChrominViewModel;

                if (cvm == null || cvm.WebBrowser == null)
                {
                    if (cmd != "_OpenUrl" && cmd != "_NewTask")
                    {
                        return;
                    }
                }
                switch (cmd)
                {
                case "_Back":
                    cvm.WebBrowser.GetBrowser().GoBack();
                    break;

                case "_Fresh":
                    cvm.WebBrowser.GetBrowser().Reload();
                    break;

                case "_Next":
                    cvm.WebBrowser.GetBrowser().GoForward();
                    break;

                case "_Close":
                    cvm.WebBrowser.GetBrowser().CloseBrowser(false);
                    PageList.Remove(cvm);
                    break;

                case "_OpenUrl":
                    OpenUrl((string)cmds[2]);
                    break;

                case "_NewTask":
                    OpenTask((string)cmds[2]);
                    break;

                default:
                    break;
                }
            }
        }
Пример #4
0
        //Task分配循环
        private void BK_DoWork(object sender, DoWorkEventArgs e)
        {
            while (TaskHelper.HasTask())
            {
                CustomChrominWebBrowser browser = null;     //尝试从对象池中获取一个可用对象

                while (browser == null)
                {
                    //任务队列还有任务
                    browser = BH.Get();
                    Thread.Sleep(2000);
                    //LogHelper.Debug("继续 等待可用对象");
                }
                {
                    var _MainTask = TaskHelper.PopTask();
                    if (_MainTask == null)
                    {
                        return;
                    }
                    //LogHelper.Debug(string.Format("取得任务[{0}],及可用对象", _MainTask.Action));

                    //LogHelper.Debug(string.Format("池=>{1}/{0} ", BH.GetPoolSize(), BH.GetObjectSize()));
                    browser.Info = _MainTask;
                    //获取到可用对象则进行解析任务

                    browser.RequestHandler = new CustomRequestHandler();
                    if (browser.LifeSpanHandler == null)
                    {
                        browser.LifeSpanHandler = LifeSpanHandler;
                    }
                    browser.LoadHandler = new CustomLoadHandler();
                    ((CustomLoadHandler)browser.LoadHandler).OnStateChange += Browser_StateChanged;

                    browser.FrameLoadStart -= Browser_FrameLoadStart;
                    browser.FrameLoadStart += Browser_FrameLoadStart;

                    var page = new ChrominViewModel(browser);
                    //PreLoad = page;
                    App.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        browser.Address = browser.Info.Action;
                        TaskList.Add(page);
                    }));
                }
            }
        }
Пример #5
0
        public bool CommandJudger(object pra)
        {
            if (pra is object[])
            {
                object[]         cmds = pra as object[];
                string           cmd  = cmds[0] as string;
                ChrominViewModel cvm  = cmds[1] as ChrominViewModel;
                //Console.WriteLine("Canexcute=====>" + cmd);
                if (cvm == null || cvm.WebBrowser == null)
                {
                    if (cmd == "_OpenUrl")
                    {
                        if (!string.IsNullOrWhiteSpace((string)cmds[2]))
                        {
                            return(true);
                        }
                    }
                    if (cmd == "_NewTask")
                    {
                        if (!string.IsNullOrWhiteSpace((string)cmds[2]))
                        {
                            return(true);
                        }
                    }
                    return(false);
                }
                switch (cmd)
                {
                case "_Back":
                    return(cvm.WebBrowser.CanGoBack);

                case "_Fresh":
                    return(cvm.WebBrowser.Address != null);

                case "_Next":
                    return(cvm.WebBrowser.CanGoForward);

                case "_Close":
                    return(true);

                case "_OpenUrl":
                    App.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        CommandManager.InvalidateRequerySuggested();
                    }));
                    if ((cvm == null || cvm.WebBrowser.Address == null))
                    {
                        if ((cmds[2] == null || (string)cmds[2] == ""))
                        {
                            return(false);
                        }
                        return(true);
                    }
                    else
                    {
                        return(cvm.WebBrowser.Address != cmds[2] as string);
                    }

                case "_NewTask":

                    return(CmdHelper.CanAnalysis(cmds[2] as string));

                default:
                    break;
                }
            }
            return(pra == null ? false : true);
        }