Как встроить веб-приложение в приложение Windows с пользовательским поведением

Мне нужно встроить стандартное веб-приложение в контейнер приложения Windows.

Контейнер просто должен быть оболочкой для webkit или аналогичного механизма рендеринга (я хотел бы по возможности избегать использования механизма рендеринга IE), и он должен содержать некоторую минимальную логику управления окнами — такие вещи, как отсутствие полей без заголовков, возможность исправить положение и размер, а также настраиваемые правила наложения/всегда поверх окна, основанные на текущем выделенном окне.

Я смотрел на node-webkit, и, похоже, он отвечает всем требованиям, если речь идет о веб-приложении, но я не уверен, что смогу сделать последнее.

Можно ли это сделать с помощью node-webkit, есть ли другой подход, который лучше подходит для моего варианта использования? Я совершенно не знаю, как делается разработка приложений для Windows, поэтому буду признателен за помощь.


person moljac024    schedule 01.09.2015    source источник
comment
Взгляните на элемент управления WebBrowser. Поскольку вы использовали тег c#, вот ссылка на файл Справочник по Visual Basic.   -  person IInspectable    schedule 02.09.2015


Ответы (2)


Если вы используете WPF, вы можете создать окно примерно так (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 означает окно "без полей и без заголовков". Left и Top обозначают позицию, а Width и Height говорят сами за себя. Ко всем этим свойствам можно получить доступ с помощью кода программной части с помощью простых this.Width и т. д. PreviewKeyDown Я поставил здесь, потому что в этом примере (как вы увидите) свойство Topmost будет изменено из кода программной части (динамически).

Код программной части должен выглядеть как использование System;

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 вы можете проверить Как использовать элемент управления браузером WebKit в WPF

person Igor    schedule 04.09.2015

Что вам нужно, так это «UWP Bridge для веб-приложений» ;-)

Посмотрите в Центре разработки для Windows: UWP Bridge для веб-приложений — создайте свое приложение сейчас

person Asesjix    schedule 04.09.2015