C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具

前言

CefSharp是一个C#客户端内嵌入chromium开源项目浏览器的工具,方便在客户端中自然的访问网页内容,十分好用。当然,网上有很多使用CefSharp的教程了,怎么使用都很详尽。我这里只是用来做一下自己想要做的玩意儿,也是一个好玩的玩意儿。CefSharp官方github地址:https://github.com/cefsharp/CefSharp。

 

正文

引入Cefsharp的方法也十分简单,受益于VS的NuGet程序包管理器,需要使用NuGet管理器安装CefSharp.Common、CefSharp.Wpf(WinForm下载安装CefSharp.WinForms)。下载完成后保证引用中包含以下三个动态库:

初始化Cef:

        private void InitCef()
        {
            var flashPath = startPath + "\\pepflashplayer.dll";
            var cefSettings = new CefSettings();
            cefSettings.CachePath = "cache";
            cefSettings.CefCommandLineArgs["enable-system-flash"] = "1";
            cefSettings.CefCommandLineArgs.Add("ppapi-flash-version", "21.0.0.182");
            //插入地址
            cefSettings.CefCommandLineArgs.Add("ppapi-flash-path", flashPath);
            Cef.Initialize(cefSettings);
        }

这里面我引入了一个叫pepflashplayer.dll的Flash播放插件。

将库中的控件类 ChromiumWebBrowser 添加到界面:

        private void InitBrowser()
        {            
            browser = new ChromiumWebBrowser(txtUrl.Text);
            browser.FrameLoadEnd += Browser_FrameLoadEnd;
            browser.VerticalAlignment = VerticalAlignment.Stretch;
            browser.HorizontalAlignment = HorizontalAlignment.Stretch;
            gdMain.Children.Clear();
            gdMain.Children.Add(browser);            
        }

就这样。基本上就完事了。

但是我今天要讲的是做一个“开小差工具”,顾名思义,就是我做这个就是来用开小差的,就是在工作的时候用来偷懒干其他事情的工具......

核心做法就是把这个内嵌浏览器的窗口无边框化,然后置顶,加入“老板键”(注册全局热键隐藏显示窗体),这样我们的web窗体就可以嵌入在任何我们想要嵌入的地方。如下图。

看下图我是在看代码吧,但仔细看看,我其实在看左边的小说......万一真被人发现了,就说是网页上的div广告呗,反正也可以一键隐藏,做到真正的无声无息。

C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具_第1张图片

由于加入了Flash插件,我当然还可以打游戏了......

C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具_第2张图片

这个就实在太高调了......

这些mini无框网页,上边还应该有输入地址栏的地方,就像下面这样,当鼠标移开就隐藏起来。

C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具_第3张图片

由于取消了任务栏显示的任务图标,要关闭非得打开任务管理器就麻烦,加入双击显示出来的标题栏则关闭软件的功能。

最后麻烦的是,虽然你们看到了无边框的纯净页面,但是浏览器网页是这样的吗,不是应该有纵向或横向滚动条吗?就像下面这样的:

C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具_第4张图片

难看,贼不爽。所以在控件类ChromiumWebBrowser 的FrameLoadEnd 事件中实现这个代码就有必要了:

        private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
        {
            e.Browser.MainFrame
            .ExecuteJavaScriptAsync( //设置滚动条宽度0
                "var style1 = document.createElement('style');style1.innerHTML = 'body::-webkit-scrollbar{width:0 !important;background:transparent}';document.head.appendChild(style1);");            
        }

这个代码就是在浏览器中执行了一段JS代码,该代码是动态的向网页中添加style标签,css内容为将网页滚动条宽度改为0,为什么不是隐藏滚动条呢,因为如果隐藏了滚动条这个网页就滚不动了......

好了。“开小差工具”就差不多了,可以自己尝试做一个用起来啦。

当然了,偶尔皮一下就行了,被老板抓到炒鱿鱼就得不偿失了。

你可能感兴趣的:(小玩意)