it-swarm.com.ru

Добавить новый Microsoft Edge для контроля веб-браузера?

Новая Windows 10 с Microsoft Edge прибыла. Я хочу спросить вас, как я могу добавить его в свой контроль веб-браузера? Я нуждаюсь в этом, потому что фактический контроль веб-браузера не позволяет JavaScript и CSS3.

Раньше я также добавлял браузер Chrome с проектами WebKit и Awesomium, но они не запомнили учетные данные для входа (они нужны мне для моего приложения), поэтому я должен использовать I.E. к несчастью.

34
Nico

К сожалению, похоже, что в настоящее время невозможно использовать Edge в элементе управления веб-браузера MS без использования сторонних дополнений. Хотя предлагаемое «решение» для добавления dword: 00002ee1 к FEATURE_BROWSER_EMULATION заставляет веб-браузер (ложно) сообщать Edge/12.9200_AGENT как USER_AGENT, фактически он все еще использует движок Trident для визуализации веб-содержимого. Таким образом, похоже, что Microsoft планировала поддерживать Edge в управлении веб-браузером, но не закончила работу и забыла вынуть соответствующий ключ эмуляции. Вы можете убедиться в этом, перейдя по адресу http://html5test.com/ , где элемент управления веб-браузера получает от 342 до 347 баллов (то же, что и IE11), а Edge - 397 баллов.

22
Martin Kasztantowicz

ОБНОВЛЕНИЕ Май 2018 года: В завершение Microsoft упростила задачу . https://blogs.windows.com/msedgedev/2018/05/09/modern-webview-winforms-wpf-apps/

На данный момент новый элемент управления находится в Windows Community Toolkit 3.0 и содержится в Toolkit.Win32.UI.Controls.dll, на который вам может понадобиться вручную добавить ссылку.

====== Я хотел бы, чтобы кто-то упомянул об этом, поэтому я добавлю это, потому что не похоже, что элемент управления веб-браузером когда-либо будет обновлен.

Вместо этого используйте элемент управления WebView. Это использует движок рендеринга EdgeHTML. Это часть слоя WindowPresentation но можно ссылаться из WinForms и предположительно других приложений. Вы должны преобразовать в приложение UWP

import Windows.UI.Xaml.Controls.WebView

Пример кода: https://code.msdn.Microsoft.com/windowsapps/XAML-WebView-control-sample-58ad63f7

Я еще не заменил свой WebBrowser на WebView, но интерфейс выглядит довольно знакомым.

20
Garr Godfrey

UPDATE Как указано в ответе @MartinKasztantowicz ', на данный момент (середина февраля '16) не существует никакого известного способа загрузить движок рендеринга real Edge . Следующее устанавливает управлять сообщить о новом агенте пользователя но использует старый движок для рендеринга. Тем не менее, это полезно, например, для убедить сайты отключить устаревшие IE хаки.

Версия System.Windows.Forms.WebBrowser в браузере контролируется для каждого приложения с помощью ключа реестра. Если ваши пользователи работают в Windows 10, вы можете указать элементу управления нагрузка fake Edge, добавив следующий ключ:

  • Для 64-битных приложений, только для 32-битной Windows или текущего пользователя: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1 соответственно [HKEY_CURRENT_USER\...]
  • Для 32-битных приложений на 64-битных компьютерах (только для всей машины): [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1

Для получения дополнительной информации и значений, проверьте соответствующий Документация Microsoft

Я только что проверил, и получил следующий результат ... не знаю, есть ли какие-либо значения для отчета о Windows 10:

 enter image description here

14
CaringDev

Все ли забыли библиотеки Windows API? Чтобы встроить ЛЮБОЕ окно, вам просто нужна комбинация MoveWindow и SetParent . Чтобы скрыть строку заголовка, вы можете использовать SetWindowLong , а если вам нужно скрыть другие части вокруг окна (например, адресную строку), вы можете легко использовать HwndHost

C++ Пример встраивания Блокнота:

HWND Window = FindWindow("Notepad", "Untitled - Notepad");
if (Window != nullptr)
{
    SetParent(Window, hwnd);
    SetWindowPos(Window, nullptr, 0, 0, 0, 0, SWP_NOSIZE);
    RedrawWindow(Window, nullptr, nullptr, RDW_INVALIDATE);
    ShowWindow(Window, SW_SHOW);
}

Не поймите меня неправильно, это глупо, но это работает.

Во всяком случае, Microsoft сделала такая функция сейчас

5
Sancarn

Старые ответы о невозможности этого уже устарели.

Microsoft недавно выпустила свою версию веб-браузера Microsoft Edge. Они называют это "Webview" Это для WPF и Winforms. Вот их официальное объявление с некоторой информацией о старте из блога Windows в апреле 2018 года.

Существует также документация API для него.

1
Alexander Ryan Baggett

Используйте JavaFX, который использует встроенный движок WebKit. Или, если вы застряли в .NET, то https://www.teamdev.com/dotnetbrowser

0
sproketboy