欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#基于Miniblink控件編寫一個(gè)簡(jiǎn)易的瀏覽器

 更新時(shí)間:2024年01月31日 10:30:25   作者:搬磚的詩(shī)人Z  
miniblink是一款精簡(jiǎn)小巧的瀏覽器控件,基于chromium精簡(jiǎn)而成,是市面上最小巧的chromium內(nèi)核控件沒有之一,本文將結(jié)合C#和Miniblink編寫一個(gè)簡(jiǎn)易的瀏覽器,感興趣的可以了解下

效果圖

項(xiàng)目結(jié)構(gòu)

實(shí)現(xiàn)代碼

using Miniblink;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Windows.Forms;
using XinShiYun_PlatformTools.Common;

namespace XinShiYun_PlatformTools
{
    public partial class Chrome : Form
    {
        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

        /// <summary>
        /// 默認(rèn)瀏覽器
        /// </summary>
        MiniblinkBrowser blinkBrowser;

        MouseHook mouse = new MouseHook();

        JsonHelper jsonHelper = new JsonHelper();

        public List<FavoriteModel> favoriteModels = new List<FavoriteModel>();

        WebBrowser webBrowser = new WebBrowser();

        string pageUrl = "";

        public Chrome(string[] args)
        {
            InitializeComponent();

            webBrowser.Visible = false;
            this.Controls.Add(webBrowser);


            if (args.Count() > 0)
            {
                pageUrl = args[0];
                if (pageUrl.Contains("proplat:"))
                {
                    pageUrl = pageUrl.Substring(14, pageUrl.Length - 14);
                }
            }

            this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;

            // Win32.SetClassLong(this.Handle, Win32.GCL_STYLE, Win32.GetClassLong(this.Handle, Win32.GCL_STYLE) | Win32.CS_DropSHADOW);

            myTab.Height = 50;
            SetStyles();

            //mouse.OnMouseActivity += new MouseEventHandler(mouse_OnMouseActivity);
            //mouse.Start();

            formStyleControl.ClickMaxEvent += FormStyleControl_ClickMaxEvent;
            formStyleControl.ClickMinEvent += FormStyleControl_ClickMinEvent;
            taskRegion.EnterSearchEvent += TaskRegion_EnterSearchEvent;
            taskRegion.ClickCollectionEvent += TaskRegion_ClickCollectionEvent;
            taskRegion.ClickFilesEvent += TaskRegion_ClickFilesEvent;
            taskRegion.ClickRefreshEvent += TaskRegion_ClickRefreshEvent;
            taskRegion.ClickLeftEvent += TaskRegion_ClickLeftEvent;
            taskRegion.ClickRightEvent += TaskRegion_ClickRightEvent;

            myTab.AddEvent += MyTab_AddEvent;
            myTab.ClickTabEvent += MyTab_ClickTabEvent;
            myTab.ClickCloseTabEvent += MyTab_ClickCloseTabEvent;

            blinkBrowser = new MiniblinkBrowser();
            blinkBrowser.Name = "blinkBrowser_1";
            blinkBrowser.Dock = DockStyle.Fill;
            blinkBrowser.NavigateBefore += BlinkBrowser_NavigateBefore;
            blinkBrowser.DocumentReady += BlinkBrowser_DocumentReady;
            blinkBrowser.Download += BlinkBrowser_Download;

            myTab.ActiveTab.myBlinkBrowser = blinkBrowser;
            panel_Page.Controls.Add(blinkBrowser);

            LoadFav();

            if (!String.IsNullOrEmpty(pageUrl))
            {
                taskRegion.SearchText = pageUrl;
                LoadChromeUrl(blinkBrowser, pageUrl);
            }

        }

        private void BlinkBrowser_Download(object sender, DownloadEventArgs e)
        {
            try
            {
                var cookie = blinkBrowser.Cookies.GetJSESSIONID();

                if (cookie != null)
                {
                    // MainView mainView = new MainView(e.Url, cookie.Value);
                     mainView.WindowState = FormWindowState.Maximized;
                    // mainView.ShowDialog();

                    InternetSetCookie(e.Url, "JSESSIONID", cookie.Value);
                    webBrowser.Url = new Uri(e.Url);
                }
            }
            catch (Exception ex)
            {

                throw;
            }
           
        }

        private void FormStyleControl_ClickMinEvent(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

        /// <summary>
        /// 注冊(cè)注冊(cè)表
        /// </summary>
        private void Register()
        {
            string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "Config\\Register.txt";
            if (File.Exists(filePath))
            {
                string value = TxtHelper.ReadText(filePath).Trim();
                if (value == "0")
                {
                    //未注冊(cè)
                    RegisterTableHelper.Reg("proplat");
                    TxtHelper.WriteText(filePath, "1");
                }
            }
            else
            {
                RegisterTableHelper.Reg("proplat");
                TxtHelper.WriteText(filePath, "1");
            }

        }

        /// <summary>
        /// 前進(jìn)
        /// </summary>
        private void TaskRegion_ClickRightEvent(object sender, EventArgs e)
        {
            var tab = myTab.ActiveTab;
            if (tab == null)
                return;

            if (tab.myBlinkBrowser == null)
                return;

            tab.myBlinkBrowser.GoForward();

            taskRegion.IsBackPage = tab.myBlinkBrowser.CanGoBack;
            taskRegion.IsForwardPage = tab.myBlinkBrowser.CanGoForward;
            taskRegion.Refresh();
        }

        /// <summary>
        /// 后退
        /// </summary>
        private void TaskRegion_ClickLeftEvent(object sender, EventArgs e)
        {
            var tab = myTab.ActiveTab;
            if (tab == null)
                return;

            if (tab.myBlinkBrowser == null)
                return;

            tab.myBlinkBrowser.GoBack();

            taskRegion.IsBackPage = tab.myBlinkBrowser.CanGoBack;
            taskRegion.IsForwardPage = tab.myBlinkBrowser.CanGoForward;
            taskRegion.Refresh();
        }

        private void TaskRegion_ClickRefreshEvent(object sender, EventArgs e)
        {
            var tab = myTab.ActiveTab;
            if (tab == null)
                return;

            tab.myBlinkBrowser.Reload();
        }

        private void LoadFav()
        {
            var list = jsonHelper.ReadFavorite();
            favoriteModels = list;

            if (favoriteModels == null)
                return;
            if (favoriteModels.Count() <= 0)
                return;
            foreach (var item in favoriteModels)
            {
                contextMenuStrip_Fav.Items.Add(item.Title);
            }
        }

        private void TaskRegion_ClickFilesEvent(object sender, EventArgs e)
        {
            contextMenuStrip_Fav.Show(Control.MousePosition);
        }

        private void TaskRegion_ClickCollectionEvent(object sender, EventArgs e)
        {
            var tab = myTab.ActiveTab;
            if (tab == null)
                return;
            if (String.IsNullOrEmpty(tab.urlLink.Trim()))
                return;

            FavoriteModel model = new FavoriteModel();
            model.Title = tab.TabTitle;
            model.Url = tab.urlLink;
            jsonHelper.AddFavorite(model);
            LoadFav();

            MessageBox.Show("收藏成功");
        }

        /// <summary>
        /// 關(guān)閉標(biāo)簽
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="tabPage"></param>
        private void MyTab_ClickCloseTabEvent(object sender, EventArgs e, MiniblinkBrowser browser)
        {
            if (browser != null)
            {
                panel_Page.Controls.Remove(browser);
                taskRegion.SearchText = "";
            }
        }


        private void MyTab_ClickTabEvent(object sender, EventArgs e, TabPage tabPage)
        {
            foreach (Control item in panel_Page.Controls)
            {
                if (item.Name.Contains("blinkBrowser_"))
                {
                    item.Visible = false;
                }
            }
            taskRegion.SearchText = "";
            string name = "blinkBrowser_" + tabPage.Tag.ToString();
            var list = panel_Page.Controls.Find(name, false);
            if (list == null)
                return;

            if (list.Count() <= 0)
                return;

            var mytab = (MiniblinkBrowser)list.First() as MiniblinkBrowser;
            mytab.Visible = true;
            taskRegion.SearchText = myTab.ActiveTab.urlLink;
        }

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="tabPage"></param>
        private void MyTab_AddEvent(object sender, EventArgs e, TabPage tabPage)
        {
            foreach (Control item in panel_Page.Controls)
            {
                if (item.Name.Contains("blinkBrowser_"))
                {
                    item.Visible = false;
                }
            }
            taskRegion.SearchText = "";

            MiniblinkBrowser mblinkBrowser = new MiniblinkBrowser();
            mblinkBrowser.Name = "blinkBrowser_" + tabPage.Tag.ToString();
            mblinkBrowser.Dock = DockStyle.Fill;
            mblinkBrowser.NavigateBefore += BlinkBrowser_NavigateBefore;
            mblinkBrowser.DocumentReady += BlinkBrowser_DocumentReady;
            tabPage.myBlinkBrowser = mblinkBrowser;
            panel_Page.Controls.Add(mblinkBrowser);

        }

        private void BlinkBrowser_NavigateBefore(object sender, Miniblink.NavigateEventArgs e)
        {
            if (e.Type == NavigateType.BlankLink)
            {
                try
                {
                    if (e.Url.Contains("downLoadYjsdHZJzdy"))
                    {
                        blinkBrowser.Cookies.GetCookies(e.Url);
                        var cookie = blinkBrowser.Cookies.GetJSESSIONID();

                        if (cookie != null)
                        {
                            InternetSetCookie(e.Url, "JSESSIONID", cookie.Value);
                            webBrowser.Url = new Uri(e.Url);
                        }
                    }
                    else
                    {
                        myTab.AddTabFunction();
                        MyTab_Add(e.Url);
                    }
                }
                catch (Exception ex)
                {
                 
                }
             
            }
        }

        private void MyTab_Add(string url)
        {
            if (myTab.ActiveTab == null)
                return;

            foreach (Control item in panel_Page.Controls)
            {
                if (item.Name.Contains("blinkBrowser_"))
                {
                    item.Visible = false;
                }
            }

            TabPage tabPage = myTab.ActiveTab;
            MiniblinkBrowser blinkBrowser = new MiniblinkBrowser();
            blinkBrowser.Name = "blinkBrowser_" + tabPage.Tag.ToString();
            blinkBrowser.Dock = DockStyle.Fill;
            blinkBrowser.NavigateBefore += BlinkBrowser_NavigateBefore;
            blinkBrowser.DocumentReady += BlinkBrowser_DocumentReady;

            tabPage.myBlinkBrowser = blinkBrowser;
            tabPage.urlLink = url;
            panel_Page.Controls.Add(blinkBrowser);

            LoadChromeUrl(blinkBrowser, url);
        }

        private void BlinkBrowser_DocumentReady(object sender, DocumentReadyEventArgs e)
        {
            try
            {
                taskRegion.SearchText = e.Frame.Url;

                TabPage tabPage = myTab.ActiveTab;
                if (tabPage != null)
                {
                    tabPage.urlLink = e.Frame.Url;
                }

                if (myTab.ActiveTab != null)
                {
                    myTab.ActiveTab.TabTitle = myTab.ActiveTab.myBlinkBrowser.DocumentTitle;
                }
                ShowForwardAndBack();
                myTab.ActiveTab.myBlinkBrowser.Focus();

            }
            catch (Exception)
            {


            }

        }


        private void TaskRegion_EnterSearchEvent(object sender, KeyEventArgs e)
        {
            if (String.IsNullOrEmpty(taskRegion.SearchText))
                return;

            LoadChromeUrl(myTab.ActiveTab.myBlinkBrowser, taskRegion.SearchText);
        }

        /// <summary>
        /// 加載網(wǎng)頁(yè)
        /// </summary>
        /// <param name="mblinkBrowser"></param>
        private void LoadChromeUrl(MiniblinkBrowser mblinkBrowser, string url)
        {
            if (String.IsNullOrEmpty(url))
                return;

            if (!url.Contains("http://") && !url.Contains("https://"))
            {
                taskRegion.SearchText = "http://" + url;
                url = "http://" + url;
            }

            mblinkBrowser.LoadUri(url);
        }

        /// <summary>
        /// 點(diǎn)擊最大化按鈕
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FormStyleControl_ClickMaxEvent(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                formStyleControl.TabMaxImage = Resource.form_max;
                this.WindowState = FormWindowState.Normal;
            }
            else
            {
                formStyleControl.TabMaxImage = Resource.form_recovery;
                this.WindowState = FormWindowState.Maximized;
            }
        }

        void mouse_OnMouseActivity(object sender, MouseEventArgs e)
        {
            //int x = this.Location.X + formStyleControl.Location.X;
            //int y = this.Location.Y + formStyleControl.Location.Y;
            //Rectangle formRect = new Rectangle(new Point(x, y), formStyleControl.Size);
            //if (!formRect.Contains(e.Location))
            //{
            //    LeaveFormEvent();
            //}

            收藏
            //var rectCollection = taskRegion.GetControlLocation("taskBtn_File");
            //int collectionX = this.Location.X + rectCollection.X;
            //int collectionY = this.Location.Y + rectCollection.Y;
            //Rectangle collectionRect = new Rectangle(new Point(collectionX, collectionY), rectCollection.Size);
            //if (!collectionRect.Contains(e.Location))
            //{
            //    taskRegion.SetCollectionBackColor();
            //}

            刷新
            //var rectRefresh = taskRegion.GetControlLocation("taskBtn_Refresh");
            //int refreshX = this.Location.X + rectRefresh.X;
            //int refreshY = this.Location.Y + rectRefresh.Y;
            //Rectangle refreshRect = new Rectangle(new Point(refreshX, refreshY), rectRefresh.Size);
            //if (!refreshRect.Contains(e.Location))
            //{
            //    taskRegion.SetRefreshBackColor();
            //}
        }

        private void LeaveFormEvent()
        {
            formStyleControl.SetBackColor();
        }

        private void SetStyles()
        {
            SetStyle(
                ControlStyles.UserPaint |
                ControlStyles.AllPaintingInWmPaint |
                ControlStyles.OptimizedDoubleBuffer |
                ControlStyles.ResizeRedraw |
                ControlStyles.DoubleBuffer, true);
            //強(qiáng)制分配樣式重新應(yīng)用到控件上
            UpdateStyles();
            base.AutoScaleMode = AutoScaleMode.None;
        }

        #region 移動(dòng)窗體的dll

        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();
        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        public const int WM_SYSCOMMAND = 0x0112;
        public const int SC_MOVE = 0xF010;
        public const int HTCAPTION = 0x0002;

        #endregion

        //移動(dòng)窗體
        protected override void OnMouseDown(MouseEventArgs e)
        {
            //釋放鼠標(biāo)焦點(diǎn)捕獲
            Win32.ReleaseCapture();
            //向當(dāng)前窗體發(fā)送拖動(dòng)消息
            Win32.SendMessage(this.Handle, 0x0112, 0xF011, 0);
            base.OnMouseUp(e);

            base.OnMouseDown(e);
        }

        private void myTab_MouseDownEvent(object sender, MouseEventArgs e)
        {
            OnMouseDown(e);
        }

        private void Chrome_Load(object sender, EventArgs e)
        {
            Register();
        }

        private void formStyleControl_ClickCloseEvent(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void contextMenuStrip_Fav_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string name = e.ClickedItem.Text;
            var list = favoriteModels.Where(s => s.Title.Contains(name)).ToList();
            if (list == null)
            {
                return;
            }
            if (list.Count() > 0)
            {
                var data = list.First();
                taskRegion.SearchText = data.Url;
                myTab.ActiveTab.myBlinkBrowser.LoadUri(data.Url);
                this.Refresh();
            }
        }

        /// <summary>
        /// 是否顯示前進(jìn)后退
        /// </summary>
        private void ShowForwardAndBack()
        {
            var tab = myTab.ActiveTab;
            if (tab == null)
                return;

            if (tab.myBlinkBrowser == null)
                return;

            taskRegion.IsBackPage = tab.myBlinkBrowser.CanGoBack;
            taskRegion.IsForwardPage = tab.myBlinkBrowser.CanGoForward;
            taskRegion.Refresh();
        }

        private void myTab_MouseDoubleClick(object sender, MouseEventArgs e)
        {

        }

        private void Chrome_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F12)
            {
                //myTab.ActiveTab.myBlinkBrowser.ShowDevTools();
                // blinkBrowser.ShowDevTools();
            }
        }
    }
}

以上就是C#基于Miniblink控件編寫一個(gè)簡(jiǎn)易的瀏覽器的詳細(xì)內(nèi)容,更多關(guān)于C# Miniblink瀏覽器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#中Invoke 和 BeginInvoke 的真正涵義

    C#中Invoke 和 BeginInvoke 的真正涵義

    這篇文章主要介紹了C#中Invoke 和 BeginInvoke 的真正涵義,需要的朋友可以參考下
    2014-10-10
  • 用C#生成不重復(fù)的隨機(jī)數(shù)的代碼

    用C#生成不重復(fù)的隨機(jī)數(shù)的代碼

    我們?cè)谧瞿茏詣?dòng)生成試卷的考試系統(tǒng)時(shí),常常需要隨機(jī)生成一組不重復(fù)的題目,在.net Framework中提供了一個(gè)專門用來產(chǎn)生隨機(jī)數(shù)的類System.Random
    2013-02-02
  • Unity C#打包AssetBundle與場(chǎng)景詳解

    Unity C#打包AssetBundle與場(chǎng)景詳解

    這篇文章主要給大家介紹了關(guān)于Unity C#打包AssetBundle與場(chǎng)景的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 基于C#一個(gè)制作圖像的特寫窗口

    基于C#一個(gè)制作圖像的特寫窗口

    許多網(wǎng)站都會(huì)顯示一個(gè)特寫窗口,其中顯示放大的圖像部分,以便您可以看到更多細(xì)節(jié),本文將使用C#制作一個(gè)簡(jiǎn)單的圖像的特寫窗口,感興趣的可以了解下
    2025-01-01
  • C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能示例

    C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能示例

    這篇文章主要介紹了C#實(shí)現(xiàn)的上傳圖片、保存圖片、加水印、生成縮略圖功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了C#圖片上傳、保存、水印、縮略圖等相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • C#控制臺(tái)程序輸出等腰三角形并居中顯示實(shí)例

    C#控制臺(tái)程序輸出等腰三角形并居中顯示實(shí)例

    這篇文章主要介紹了C#控制臺(tái)程序輸出等腰三角形并居中顯示實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • c# 命名空間和程序集

    c# 命名空間和程序集

    命名空間:用于對(duì)相關(guān)的類型進(jìn)行邏輯分組,使用命名空間方便定位一個(gè)類型
    2012-10-10
  • C#實(shí)現(xiàn)圖片縮略圖功能的示例詳解

    C#實(shí)現(xiàn)圖片縮略圖功能的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)圖片縮略圖的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘和日歷

    C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘和日歷

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)動(dòng)態(tài)數(shù)字時(shí)鐘和日歷的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • c# 使用WebRequest實(shí)現(xiàn)多文件上傳

    c# 使用WebRequest實(shí)現(xiàn)多文件上傳

    這篇文章主要介紹了c# 使用WebRequest實(shí)現(xiàn)多文件上傳的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論