如何将 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。 Left
和 Top
代表位置,Width
和 Height
不言自明。所有这些属性都可以通过代码隐藏使用简单的 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
我需要在 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。 Left
和 Top
代表位置,Width
和 Height
不言自明。所有这些属性都可以通过代码隐藏使用简单的 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