kazuakix の日記

Windows Phone とか好きです

Windows Phone の WebView でUser-Agent を変更する

日本でも Amazon Cound Reader が始まったおかげで、ついに Windows で Kindle 本が読めるようになりつつあります。素晴らしいですね。

でも、僕らの Windows Phone で開くと...一部しか表示されません。

f:id:kazuakix:20140921103007j:plain,w240

たぶんこんな指定があるからでしょうか?

<meta name="viewport" content="user-scalable=no, width=device-width, maximum-scale=1.0, minimum-scale=1.0">

レイアウト崩さないようにするには仕方ないんでしょうけど困りますね。

Viewbox で囲んでみる

そっちが変えさせてくれないなら こんな感じに WebView を Viewbox で囲んでやると...

<Viewbox>
    <WebView x:Name="WebView" Height="1280" Width="800" />
</Viewbox>
public MainPage()
{
    this.InitializeComponent();

    this.NavigationCacheMode = NavigationCacheMode.Required;
    this.Loaded += (s, e) =>
    {
        this.WebView.Navigate(new Uri("http://read.amazon.co.jp"));
    };
}

ダメかー

f:id:kazuakix:20140921103014j:plain,w480

WebView は強制的にモバイル用サイトで表示されるんですね。
 

WebView の User-Agent を変更する

で、いろいろ探した結果がこちら

UrlMkSetSessionOption を使うと現在のインターネット接続のオプションを変更することができるようです。

早速、書いてあるコードをコピペして IE11 デスクトップモードの User-Agent を指定しました。

using System;
using System.Runtime.InteropServices;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace App11
{
    public sealed partial class MainPage : Page
    {
        [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
        private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
        const int URLMON_OPTION_USERAGENT = 0x10000001;

        public void ChangeUserAgent(string Agent)
        {
            UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
        }

        public MainPage()
        {
            this.InitializeComponent();

            this.NavigationCacheMode = NavigationCacheMode.Required;
            this.Loaded += (s, e) =>
            {
                ChangeUserAgent("Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko");
                this.WebView.Navigate(new Uri("http://read.amazon.co.jp"));
            };
        }

どうよ?

f:id:kazuakix:20140921103019j:plain,w480

でも、現状ログイン後がダメです… なんとかならないかな。

f:id:kazuakix:20140921103023j:plain,w480

追記

ダメなんだそうです...