Yahoo!動画を最前面にして表示する
最近 GyaO や Yahoo!動画をよく見るのですが、全画面で表示していると、仕事ができない、、、というか、仕事中に TV を見るな、とも言えますが、まあ、そのあたりは脇に置いて、、、エディタやら Visual Studio やらを使いながら、動画も眺めてみたいわけです。
そうすると考えられるのは、
1. IE をトップ画面にする
→ すると、常に前面に出てくるので、他のアプリの邪魔をしない。
2. 広告やらメニューの部分はいらないから、最小で表示する。
→ ウィンドウのタイトルバーを無しにすればいけそうです。
3. あとは、ストリーミングの URL を叩く。
→ どうせだから、画像の部分だけを切り出してしまう。
これを考えると、
ということで出来そうです。
// URLを指定する private void button1_Click(object sender, EventArgs e) { string url = textUrl.Text; // リストの「動画を見る」では、player.htmlに渡している。 // これを、makeAsx.php に渡す方式に変換 if (url.IndexOf("player.html") >= 0) { url = url.Replace("player.html", "makeAsx.php"); url = url.Replace("spid", "spaceid"); url += "&channel_no=0&ad_stream=1&product_type=1"; textUrl.Text = url; } if ( url == "" ) { // サンプル用のURL url = "http://player.streaming.yahoo.co.jp/player/makeAsx.php?" + "s_id=t&cp_id=00114&pg_id=v00630&co_id=v0063000000000325863&vw=3620&spaceid=2013007262&" + "channel_no=0&ad_stream=1&product_type=1"; } this.webBrowser1.DocumentText = string.Format( m_html, url ); this.TopMost = true; } // メニューの表示/非表示を切り替え private void buttonTitle_Click(object sender, EventArgs e) { if (buttonTitle.Tag == null ) { // タイトルを隠す buttonTitle.Text = "表示"; this.FormBorderStyle = FormBorderStyle.None; this.groupBox1.Visible = false; // 描画領域を設定して、ブラウザ部分だけを表示する GraphicsPath gp = new GraphicsPath(); gp.AddRectangle(new Rectangle( webBrowser1.Location, webBrowser1.Size)); this.Region = new Region(gp); buttonTitle.Tag = true; } else { // タイトルを表示 buttonTitle.Text = "隠す"; this.FormBorderStyle = FormBorderStyle.Fixed3D; this.groupBox1.Visible = true; this.TransparencyKey = Color.Empty; this.Region = null; buttonTitle.Tag = null; } }
URLを引っ張ってくるのが結構面倒なのですが、Yahoo!動画の場合、メニュー部分(「動画を見る」ボタンが表示されているリスト)から、実際に動画を表示するページを割り出しています。
「動画を見る」のURLは、そのままではIEでソースを見ることができないので、一旦ファイルに保存するか、別途 WebBrowserコントロールを使って、ソースを抜き出します。
キャプチャ画面では、動画が見えませんが、実際は動画が表示されている状態です。これで Visual Studio が邪魔されずに(?)仕事ができます。
追記
おやすみオーバーレイ http://hp.vector.co.jp/authors/VA033596/ojos/001overlay.html#wmp8
に、オーバーレイを無効化してキャプチャする手段が載っていました。