如何将 Web 应用程序嵌入到具有自定义行为的 windows 应用程序中

How to embed web application into windows app with custom behavior

我需要在 windows 应用程序容器中嵌入一个标准的网络应用程序。

容器只需要是 webkit 或类似渲染引擎的包装器(我想尽可能避免使用 IE 渲染引擎)并且它会包含一些最小的 window 管理逻辑 - 比如无边框,无标题栏,能够固定位置和大小,以及基于当前焦点 window.

的自定义 overlay/always-on-top 规则

我一直在查看 node-webkit,就包含 webapp 而言,它似乎符合要求,但我不确定我能否做到后者。

这可以用 node-webkit 来完成吗,有没有其他方法更适合我的用例?我完全不知道 windows 应用程序开发是如何完成的,所以我希望得到一些帮助。

如果你使用的是 WPF,你可以用这样的东西创建你 window (xaml):

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStyle="None"
        Title="MainWindow" Left="100" Top="200" Height="350" Width="525" PreviewKeyDown="Window_PreviewKeyDown">
    <Grid x:Name="grdBrowserHost">
    </Grid>
</Window>

WindowStyle attr None 表示 "borderless with no titlebars" window。 LeftTop 代表位置,WidthHeight 不言自明。所有这些属性都可以通过代码隐藏使用简单的 this.Width 等访问... PreviewKeyDown 我放在这里是因为在这个例子中(如您所见),Topmost 属性 将从代码隐藏(动态)更改。

代码隐藏应该看起来像 使用系统;

using System.Windows;
using System.Windows.Input;

namespace WpfApplication2
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            System.Windows.Controls.WebBrowser browser = new System.Windows.Controls.WebBrowser();
            // you can put any other uri here, or better make browser field and navigate to desired uri on some event
            browser.Navigate(new Uri("http://www.blic.rs/")); 
            grdBrowserHost.Children.Add(browser);
        }

        private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Escape)
            {
                this.Close();
            }
            else
            {
                this.Topmost = !this.Topmost;
            }
        }
    }
}

在这个例子中,我创建了默认的 WebBrowser 控件来显示 html。如果你想要一些其他的网络渲染引擎,你必须找到第 3 部分控件并将其包含在你的参考中。对于 webkit,您可以检查 How to use WebKit browser control in WPF

你需要的是 "UWP Bridge for web apps" ;-)

查看 Windows 开发中心: UWP Bridge for web apps - Create your app now