web-dev-qa-db-ja.com

新しいMicrosoft EdgeをWebブラウザーコントロールに追加しますか?

Microsoft Edgeを搭載した新しいWindows 10が到着しました。質問したいのですが、どのようにWebブラウザコントロールに追加できますか?実際のWebブラウザーコントロールではJavaScriptとCSS3が許可されていないため、必要です。

また、Chrome browser with project WebKit and Awesomiumを追加しましたが、ログイン資格情報を覚えていませんでした(アプリに必要です)。残念ながらI.E.を使用する必要があります。

39
Nico

2018年5月の更新:最終的にMicrosoftは簡単になりました。 https://blogs.windows.com/msedgedev/2018/05/09/modern-webview-winforms-wpf-apps/

現時点では、新しいコントロールはWindows Community Toolkit 3.0に含まれており、Toolkit.Win32.UI.Controls.dllに含まれています。手動で参照を追加する必要がある場合があります。

======誰かがこれについて言及したかったので、webbrowserコントロールが更新されるようには見えないので、これを追加します。

代わりにWebViewコントロールを使用してください。これは、EdgeHTMLレンダリングエンジンを使用します。これはWindowPresentationレイヤーの一部です しかし、WinFormsおよびおそらく他のアプリからリンクすることは可能です。 UWPアプリに変換する必要があります

import Windows.UI.Xaml.Controls.WebView

サンプルコード: https://code.msdn.Microsoft.com/windowsapps/XAML-WebView-control-sample-58ad63f7

WebBrowserをWebViewにまだ置き換えていませんが、インターフェイスはかなり馴染みがあります。

25
Garr Godfrey

残念ながら、サードパーティのアドオンを使用せずにMS webbrowserコントロールでEdgeを使用する方法は現在ないようです。 dword:00002ee1をFEATURE_BROWSER_EMULATIONに追加する提案された「ソリューション」により、WebブラウザはEdge/12.9200_AGENTをUSER_AGENTとして(誤って)報告しますが、実際にはTridentエンジンを使用してWebコンテンツをレンダリングします。そのため、MicrosoftはWebブラウザーコントロールでEdgeをサポートする予定でしたが、終了せず、対応するエミュレーションキーを取り出すのを忘れていたようです。これを確認するには、 http://html5test.com/ を参照します。webbrowserは342〜347ポイント(IE11と同じ)のスコアを制御し、Edgeは397ポイントを獲得します。

23

[〜#〜] update [〜#〜]@MartinKasztantowiczの回答に記載されているように、現在(16年2月中旬)には、 real Edgeレンダリングエンジンをロードする方法。以下は、コントロールを新しいユーザーエージェントを報告するに設定しますが、レンダリングに古いエンジンを使用するに設定します。それにもかかわらず、それは例えば非推奨のIEハッキング。

ブラウザのバージョンSystem.Windows.Forms.WebBrowserは、レジストリキーによって制御されますアプリケーションごと。ユーザーがWindows 10を使用している場合、コントロールに次のことを伝えることができます。 負荷 fake次のキーを追加してエッジ:

  • 64ビットアプリケーションの場合、32ビットのみのWindowsまたは現在のユーザー:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1それぞれ[HKEY_CURRENT_USER\...]
  • 64ビットマシン上の32ビットアプリケーションの場合(マシン全体のみ):[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1

詳細と値については、対応する Microsoft Documentation を確認してください

私はちょうどテストし、次の結果を得ました... Windows 10も報告する値があるかどうかわからない:

enter image description here

14
CaringDev

誰もがWindows APIライブラリを忘れましたか?任意のウィンドウを埋め込むには、単に MoveWindowSetParent の組み合わせが必要です。タイトルバーを非表示にするには 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);
}

誤解しないでください、それはハックですが、動作します。

とにかく、マイクロソフトは そのような機能を今すぐ

8
Sancarn

これは不可能だと言っていた古い答えは古くなっています。

マイクロソフトは最近、Microsoft EdgeベースのWebブラウザーコントロールのバージョンをリリースしました。彼らはそれを「Webview」と呼んでいます。それはWPFとWinformsのためです。こちらが公式の アナウンスメント です。2018年4月にWindowsブログからいくつかの開始情報が得られます。

APIドキュメント もあります。

埋め込みWebKitエンジンを使用するJavaFXを使用します。または、.NETで立ち往生している場合 https://www.teamdev.com/dotnetbrowser

1
sproketboy