web-dev-qa-db-fra.com

Ajouter un nouveau Microsoft Edge au contrôle du navigateur Web?

Le nouveau Windows 10 avec Microsoft Edge est arrivé. Je veux vous demander, comment puis-je l'ajouter à mon contrôle de navigateur Web? J'en ai besoin, car le contrôle du navigateur Web actuel ne permet pas l'utilisation de JavaScript et CSS3.

J'avais aussi l'habitude d'ajouter Chrome avec les projets WebKit et Awesomium, mais ils ne se souvenaient pas des informations de connexion (je les ai besoin pour mon application) et je dois donc utiliser I.E. malheureusement.

34
Nico

Malheureusement, il semble qu’il n’existe actuellement aucun moyen d’utiliser Edge dans un contrôle navigateur Web MS sans utiliser d’addons tiers. Bien que la "solution" proposée pour ajouter dword: 00002ee1 à FEATURE_BROWSER_EMULATION force le navigateur Web à signaler (faussement) l'état Edge/12.9200_AGENT en tant que USER_AGENT, il utilise en fait toujours le moteur Trident pour restituer le contenu Web. Il semble donc que Microsoft avait prévu de prendre en charge Edge dans le contrôle du navigateur Web, mais il n’a pas terminé et a oublié de retirer la clé d’émulation correspondante. Vous pouvez le vérifier en accédant à l'adresse http://html5test.com/ où le contrôle du navigateur Web affiche un score compris entre 342 et 347 points (identique à IE11), tandis qu'Edge marque 397 points.

22

Est-ce que tout le monde a oublié les bibliothèques API Windows? Pour intégrer N'IMPORTE QUELLE fenêtre, vous avez simplement besoin d'une combinaison de MoveWindow et SetParent . Pour masquer la barre de titre, vous pouvez utiliser SetWindowLong et si vous devez masquer d'autres parties autour de la fenêtre (par exemple, une barre d'adresse), vous pouvez facilement utiliser HwndHost

C++ Exemple d'intégration de 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);
}

Ne vous méprenez pas, c'est hacky, mais ça marche.

Quoi qu'il en soit, Microsoft a créé une telle fonctionnalité maintenant

5
Sancarn

Les anciennes réponses disant que cela n’était pas possible sont maintenant obsolètes.

Microsoft a récemment publié sa version du contrôle Webbrowser basé sur Microsoft Edge. Ils l'appellent "Webview" Il est pour WPF et Winforms. Voici leur annonce officielle avec des informations de démarrage sur un blog Windows en avril 2018.

Il y a aussi la documentation API pour cela aussi.

1

Utilisez JavaFX qui utilise le moteur WebKit intégré. Ou si vous êtes bloqué dans .NET alors https://www.teamdev.com/dotnetbrowser

0
sproketboy