CefSharp fournit des bindings .NET pour le framework Chromium Embedded, compatible avec WPF et Windows Forms.
Installation via NuGet : Install-Package CefSharp.Wpf.
Ce composant tierce-parti populaire présente certaines difficultés, mais sa large adoption en fait un choix courant pour intégrer un navigateur dans une application Windows.
Gestion des sous-processus Cef
Pour éviter les problèmes liés aux sous-processus, assurez-vous d'appeler la méthode de nettoyage appropriée :
Chromium.Cef.Fermer();
Personnalisation du menu contextuel
Implémentez une gestionnaire de menu pour supprimer les options par défaut :
class GestionnaireMenuPersonnalise : Chromium.IContexteMenuGestionnaire
{
public void AvantAfficherMenu(IModeleMenu modele)
{
modele.Effacer();
}
// Autres méthodes requises par l'interface
}
Configuraton de la langue préférée
Pour forcer les sites web à retourner du contenu dans une langue spécifique, modifiez les en-têtes des requêtes :
public RetourCef AvantChargementRessource(IRequete requete)
{
var enTetes = requete.EnTetes;
enTetes.Definir("accept-language", "fr-FR,fr;q=0.8,en;q=0.6");
requete.EnTetes = enTetes;
return Chromium.RetourCef.Continuer;
}
Support en temps de conception
Le contrôle CefSharp pour WPF ne prend pas en charge le design-time, nécessitant généralement une instanciation programmatique du navigateur.
Optimisation du déploiement des ressources
Pour réduire le nombre de fichiers DLL dans le répertoire principal, déplacez les dépendances CefSharp dans un sous-dossier et configurez l'assemblage.
// FodyWeavers.xml pour exclure CefSharp de la fusion
<Weavers>
<Costura ExcludeAssemblies="Chromium|Chromium.Noyau|Chromium.Wpf"/>
</Weavers>
// App.Config pour spécifier le chemin de recherche des assemblies
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="cef\binaires" />
</assemblyBinding>
</runtime>
</configuration>
// Initialisation de Cef avec des chemins personnalisés
internal static void Configurer()
{
string cheminLib = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"cef\binaires\libcef.dll");
string cheminNavigateur = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"cef\binaires\Chromium.SousProcessus.exe");
string cheminLocales = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"cef\binaires\locales\");
string cheminRessources = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"cef\binaires\");
var parametres = new ParametresCef();
parametres.CheminSousProcessus = cheminNavigateur;
parametres.CheminLocales = cheminLocales;
parametres.CheminRessources = cheminRessources;
Chromium.Initialiser(parametres, true, null);
}