it-swarm.com.de

Hinzufügen eines neuen Microsoft Edge zur Webbrowser-Steuerung?

Das neue Windows 10 mit Microsoft Edge ist da. Ich möchte Sie fragen, wie ich es meiner Webbrowser-Steuerung hinzufügen kann. Ich brauche es, weil die eigentliche Webbrowser-Steuerung JavaScript und CSS3 nicht zulässt.

Ich habe auch Chrome-Browser mit den Projekten WebKit und Awesomium hinzugefügt, aber sie erinnerten sich nicht an die Anmeldeinformationen (ich brauche sie für meine App). Unglücklicherweise.

34
Nico

Leider scheint es derzeit nicht möglich zu sein, Edge in einem MS-Webbrowser-Steuerelement ohne Addons von Drittanbietern zu verwenden. Während die vorgeschlagene "Lösung" zum Hinzufügen von dword: 00002ee1 zu FEATURE_BROWSER_EMULATION dazu führt, dass der Webbrowser Edge/12.9200_AGENT (fälschlicherweise) als USER_AGENT meldet, verwendet er tatsächlich die Trident-Engine zum Rendern des Webinhalts. Es sieht also so aus, als hätte Microsoft geplant, Edge in der Webbrowser-Steuerung zu unterstützen, wurde aber nicht fertig und vergaß, den entsprechenden Emulation-Schlüssel herauszunehmen. Sie können dies überprüfen, indem Sie nach http://html5test.com/ navigieren, wobei das Webbrowser-Steuerelement zwischen 342 und 347 Punkten (wie IE11) und Edge 397 Punkte erreicht.

22

UPDATE Mai 2018: ENDLICH hat Microsoft es leicht gemacht . https://blogs.windows.com/msedgedev/2018/05/09/modern-webview-winforms-wpf-apps/

Derzeit befindet sich das neue Steuerelement im Windows Community Toolkit 3.0 und ist in Toolkit.Win32.UI.Controls.dll enthalten, zu dem Sie möglicherweise manuell einen Verweis hinzufügen müssen.

====== Ich wünschte, jemand hätte dies erwähnt, deshalb füge ich dies hinzu, da es nicht so aussieht, als würde die Webbrowser-Steuerung jemals aktualisiert.

Verwenden Sie stattdessen das WebView-Steuerelement. Hierbei wird die EdgeHTML-Rendering-Engine verwendet. Dies ist Teil des WindowPresentation-Layers es ist jedoch möglich, von WinForms und vermutlich anderen Apps aus zu verlinken. Sie müssen in eine UWP-App konvertieren

import Windows.UI.Xaml.Controls.WebView

Beispielcode: https://code.msdn.Microsoft.com/windowsapps/XAML-WebView-control-sample-58ad63f7

Ich habe meinen WebBrowser noch nicht durch WebView ersetzt, aber die Benutzeroberfläche wirkt ziemlich vertraut.

20
Garr Godfrey

UPDATE Wie in der Antwort von @MartinKasztantowicz angegeben, ist es ab Mitte Februar 16 nicht bekannt, die real Edge-Rendering-Engine zu laden steuern Sie zu den neuen Benutzeragenten melden, aber verwendet die alte Engine zum Rendern. Es ist dennoch nützlich für z.B. Überzeugen von Sites, um veraltete IE Hacks zu deaktivieren.

Die Browserversion von System.Windows.Forms.WebBrowser wird durch einen Registrierungsschlüssel pro Anwendung gesteuert. Wenn Ihre Benutzer Windows 10 verwenden, können Sie die Steuerung anweisen belastung Fake Edge durch Hinzufügen des folgenden Schlüssels:

  • Für 64-Bit-Anwendungen nur 32-Bit-Windows oder aktueller Benutzer: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1 bzw. [HKEY_CURRENT_USER\...]
  • Für 32-Bit-Anwendungen auf 64-Bit-Maschinen (nur maschinenweit): [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] "Example.exe"=dword:00002ee1

Weitere Informationen und Werte finden Sie in der entsprechenden Microsoft-Dokumentation .

Ich habe gerade getestet und folgendes Ergebnis erhalten ... Ich weiß nicht, ob es Werte gibt, die auch Windows 10 melden:

 enter image description here

14
CaringDev

Hat jeder die Windows-API-Bibliotheken vergessen? Um ein beliebiges Fenster einzubetten, benötigen Sie lediglich eine Kombination aus MoveWindow und SetParent . Zum Ausblenden der Titelleiste können Sie SetWindowLong verwenden. Wenn Sie andere Teile im Fenster (z. B. Adressleiste) ausblenden möchten, können Sie problemlos HwndHost verwenden. 

C++ - Beispiel für das Einbetten von Notepad:

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);
}

Versteht mich nicht falsch, es ist hackig, aber es funktioniert.

Jedenfalls hat Microsoft solch eine Funktion jetzt gemacht

5
Sancarn

Die alten Antworten, dass dies nicht möglich ist, sind nicht mehr aktuell.

Microsoft hat kürzlich eine Version des Microsoft Edge-basierten Webbrowser-Steuerelements veröffentlicht. Sie nennen es "Webview". Es ist für WPF und Winforms. Hier ist ihre offizielle Ankündigung mit einigen Startinformationen aus einem Windows-Blog im April 2018.

Es gibt auch API-Dokumentation auch dafür.

Verwenden Sie JavaFX, das die eingebettete WebKit-Engine verwendet. Oder wenn Sie in .NET stecken, dann https://www.teamdev.com/dotnetbrowser

0
sproketboy