WebWindow

WebWindow是跨平台的库。 Web Window的当前实验实现可在以下平台上运行:

  • Windows – 需要基于Chromium的Edge
  • Linux – 使用WebKit
  • Mac – 需要Safari

源码

https://github.com/SteveSandersonMS/WebWindow.git

Zeje Fork的分支:https://github.com/zeje/WebWindow.git

作者博客

https://blog.stevensanderson.com

基于Chromium的Edge

因为大众用的还是Windows操作系统(如win 7,win 10)。为了面向大众,我们在Windows 10下体验下WebWindow。现在下载并安装基于Chromium的Edge:

下载地址:https://www.microsoft.com/en-us/edge

下载地址:https://www.microsoft.com/en-us/edge/business/download (建议)

中间可能在升级的时候,要求你更新操作系统才可以安装(安装过程略)

体验

本人的体验环境是:

  • Window 10
  • Visual Studio 2019
  • 基于 Chrome的 Edge

体验方式一:

  • 创建一个.net core 3.0的控制台程序

  • 安装WebWindow Nuget包

  • 加入启动代码

    using System;
    using WebWindows; namespace ZejeDesk.WebWindowApp
    {
    class Program
    {
    static void Main(string[] args)
    {
    var window = new WebWindow("择捷工作室WebWindow体验");
    window.NavigateToString("<h1 style=\"text-align:center;\">择捷工作室!</h1> <div style=\"text-align:center;\">WebWindow体验(该桌面窗口为.NET Core 3.1应用)</div>");
    window.WaitForExit();
    }
    }
    }
  • 体验效果

体验方式二:

预期目标:

  1. 不需要依赖.net core 3.0
  2. 仅仅依赖.net framework 4.5便可。
  • Clone下源码到本地

  • 打开WebWindow.Dev解决方案

  • 捣鼓编译源码的事情

    • 可爱又可恨的WebWindow.Native

      • 可爱:它实现了WebView的调用;

  • 可恨:对于国情来说,它并不完美;

    * 我们需要它对更多的浏览器的支持,特别针对双引擎浏览器

    * 对于windows底层方法的调用,并不一定需要原生支持,特别是一些简单的操作,js + http + webapi的方式完全可以胜任。

  • 编译的前提条件:WebWindow.Native

  • 安装C++桌面开发支持

  • 使用x64编译WebWindow.Native

    捣鼓这个最麻烦,每个人的环境不一,像我这等C++丢了12年的人(大一学过)来说,报include异常后完全不知道怎么搞(请教了会C++的朋友也无果),后来好像是更新了操作系统的补丁,重启后就能正常编译了。

  • 把WebWindow改成面向多目标框架的项目

修改WebWindow.csproj文件

 <TargetFramework>netstandard2.1</TargetFramework>

<TargetFrameworks>net45;net451;net452;net46;net461;net471;netstandard2.1;netcoreapp2.0;netcoreapp3.0</TargetFrameworks>

处理掉部分代码的问题,如:

net45下包System.Runtime.InteropServices.RuntimeInformation的引用问题

  • WebWindow.Dev解决方案中,新增.net framework 4.5控制台应用程序ZejeWebWindowApp

  • ZejeWebWindowApp中加入WebWindow项目引用

  • 加入启动代码
using System;
using WebWindows; namespace ZejeWebWindowApp
{
class Program
{
static void Main(string[] args)
{
var window = new WebWindow("择捷工作室WebWindow体验");
window.NavigateToString("<h1 style=\"text-align:center;\">择捷工作室!</h1> <div style=\"text-align:center;\">WebWindow体验(该桌面窗口为.NET FrameWork 4.5应用)</div>");
window.WaitForExit();
}
}
}
  • 修改项目配置

  • 体验效果

遗留的问题

  • 怎么兼容国产浏览器?
  • 怎么支持x86?
  • 其他需要调用windows底层方法如何处理?

这些都不是不懂C++的我能左右的,希望.netC++高手们贡献点力量吧!

C#桌面开发的未来WebWindow的更多相关文章

  1. C#桌面开发的未来-WebWindow

    WebWindow源码作者博客基于Chromium的Edge体验体验方式一:体验方式二:预期目标:遗留的问题 WebWindow WebWindow是跨平台的库. Web Window的当前实验实现可 ...

  2. Web和移动开发的未来

    Web和移动开发的未来 当我们与来自整个IT行业的专家交谈时,他们告诉我们技术,PWA和优化的持续整合是关键. 为了收集有关网络和移动开发当前和未来状况的见解,我们与19位IT主管进行了交流,我们问道 ...

  3. Web 开发的未来:React、Falcor 和 ES6

    Web 开发的未来:React.Falcor 和 ES6 Widen是一家数字资产管理解决方案提供商.目前,其技术栈还非常传统,包括服务器端的Java.浏览器端的AngularJS.提供REST AP ...

  4. 谷歌宣称web组件才是web开发的未来

    谷歌宣称web组件才是web开发的未来 虽然今年的谷歌I/O大会没有出现像去年谷歌眼镜发布时直播疯狂跳伞这样的活动,但是上周仍然有不少产品推出.谷歌宣布对谷歌地图.搜索.安卓,以及其他 很多产品做出更 ...

  5. 2016年末闲谈iOS开发的未来

    移动开发市场潮流涌动,好多人都会问iOS开发的前景这样的问题,今天我就瞎扯一下我眼中的未来,纯主观非理性,爱看看. Swift怎么样 Swift很好,就像你的前女友一样好. 得益于swift的开源,以 ...

  6. 从中间件的历史来看移动App开发的未来

    在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...

  7. ABAP开发人员未来应该学些什么

    2007年1月我大学毕业进入SAP Chengdu从事开发工作,到今天已经整整11年了. 这张图在ABAP开发圈子里曾广为流传: 为了避免这种窘境发生在ABAPer身上,我们应该做点什么呢? 2017 ...

  8. [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)

    FMXLinux 是一个可以用来开发 Linux 桌面软件的第三方插件,它需要配合 Delphi 10.2 Toyko 官网:http://www.fmxlinux.com/ 使用方法:开启 FMX ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(8)、关于ArcGIS Android开发的未来(“Quartz”版Beta)

    1.前言 今天再一次在官网看到了ArcGIS Runtime SDK for Android下一个版本“Quartz”版的更新资料,它将是一个非常重要的更新,包括API接口的重构和开发思路的调整.具体 ...

随机推荐

  1. SMTP错误码/建议解决方法

    SMTP错误码/建议解决方法 错误总表 420 1. Timeout Communication Problem Encountered During Transmission. Thie Is a ...

  2. C#函数的基础应用

    C#函数的基础应用 函数之前的知识回顾 数据类型--变量常量--运算符表达式--语句(顺序,分支,循环)--数组--函数 程序里的函数:能完成一个相对独立功能的代码模块. 数学里的函数:高度抽象. 函 ...

  3. phpcms数组处理后键值插入(php自带库函数)和自己处理办法比较。

    phpcms处理: public function insert($data, $table, $return_insert_id = false, $replace = false) {  if(! ...

  4. 18)添加引号转移函数,防止SQL注入

    目录机构: 然后我的改动代码: MysqlDB.class.php <?php /** * Created by PhpStorm. * User: Interact * Date: 2017/ ...

  5. RxSwift学习笔记之Subject

    本文为原创文章,转载请标明出处 AsyncSubject 一个AsyncSubject只在原始Observable完成后,发射来自原始Observable的最后一个值.它会把这最后一个值发射给任何后续 ...

  6. 接口测试-chap2-关于重定向

    重定向: 301:资源永久转移 302:资源暂时转移到另一个地址了 1.如果请求接口时发生了重定向,python会自动跟随重定向,对重定向地址发起请求,最后只能得到重定向地址的响应结果.而看不到重定向 ...

  7. Docker跨主机容器之间的通信macvlan

    找两台测试机: [root@docker1 centos_zabbix]# docker network ls NETWORK ID NAME DRIVER SCOPE 19ac9a55bedb br ...

  8. 组合数学--容斥原理&鸽巢原理

    一次会议由1990位数学家参加,每人至少有1327位合作者.证明可以找到4位数学家,他们当中每两个人都合作 优质解答 这题可以分两步来做.第一,先证明一定有三个人,他们相互合作过.可以先找两个相互合作 ...

  9. github新建Repositories后具体操作步骤

    添加用户信息 第一个要配置的是你个人的用户名称和电子邮件地址.这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录: 1 2 git c ...

  10. log4j.properties和log4j.xml配置

    >>>>1. 概述<<<< 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统 ...