Question

J'ai une simple application WPF avec un contrôle WebBrowser. Quand je dirige le contrôle pour charger une page que je voudrais avoir le contrôle dit le serveur, il essaie de charger la page de ce qu'il est un appareil mobile et donc charger la version plus petite de la page. Je sais que beaucoup de sites ajouter simplement mobile avant l'adresse, de sorte que la page mobile google.com est juste mobile.google.com, mais je me demande s'il y a un moyen de charger le que le serveur Web directement automatiquement mon contrôle WebBrowser la version mobile du site? Je me sens comme il devrait y avoir un moyen très simple de le faire, mais je ne peux pas le comprendre.)

Merci d'avance !!!

Était-ce utile?

La solution

Ce sera généralement contrôlé par le site en utilisant les User Agent, ce qui est quelque chose vous pouvez changer avec le contrôle standard WebBrowser. Il y a un contrôle WebBrowser WPF alternative, basée sur Chrome , que vous pouvez télécharger à partir de CodePlex . Il pourrait ne pas soutenir l'usurpation d'identité Agent utilisateur de la boîte, mais il est open source afin que vous puissiez modifier manuellement dans le code à un iPhone, Windows Mobile, etc.

Autres conseils

En fait, le navigateur Web ne supporte changer l'agent utilisateur via les en-têtes dans la méthode de navigation:

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );

Je sais que c'est vieux, mais c'est une chose facile à faire:

Vous devez d'abord la chaîne de l'agent utilisateur et il doit être chaîne formatée. Voici comment je le fais ci-dessous wbMobile est un contrôle de navigateur web. Cet exemple vous amènera sur le site mobile bing

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

Cela accédez à la page Web en utilisant une chaîne d'agent utilisateur mobile et vous permettent de visualiser des sites Web mobiles à la volée dans le contrôle WebBrowser

La solution de Boydski n'a pas été la bonne pour moi. La meilleure solution pour ce cas:

Modification de l'agent utilisateur du contrôle WebBrowser

Mais quelque temps le « navigator.userAgent » est pas défini avec en-tête - solution. Dans ce cas, vous devez utiliser UrlMkSetSessionOption . MSDN

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

chaînes de l'agent utilisateur approprié, vous pouvez trouver

Amusez-vous bien!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top