VB.NETのWindowsフォームにWindowsMediaPlayerコントロール(OCX)とWebBrowserコントロールを配置します。
WebBrowserに表示したページに動画ファイルのリンクがあります。
この状態で動画ファイルのリンクをクリックしたときに
配置したWindowsMediaPlayerで動画ファイルを再生するにはどうすればよいのでしょうか?
今の状態ですと新たにMediaPlayerが別ウィンドウで起動して動画再生されてしまいます。
別のウィンドウで開かずにフォームに配置したMediaPlayerで再生したいのですが。よろしくお願いいたします。
.NETでの具体的なプログラミング方法はわからないですが、
VB6でのプログラミングとさほど変わらないと思われますので、
VB6での方法を書かせていただきます。
とりあえずVB6でのサンプルプログラム
Private WithEvents hDoc As HTMLDocument
Private Sub Form_Load()
WMP.settings.autoStart = True 'デフォルトでTrueになっているので別に必要ではない
WB1.Navigate "test.htm"
End Sub
Private Function hDoc_onclick() As Boolean
Dim hAnchor As HTMLAnchorElement
Set hAnchor = hDoc.activeElement
If UCase(Right(hAnchor.href, 4)) = ".AVI" Then
WMP.URL = "c:\winnt\clock.avi"
End If
End Function
Private Sub WB1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Set hDoc = WB1.Document
End Sub
hDocはHTMLDocument型で、宣言時にWithEventsをつけて、イベントをVBで拾えるように宣言します。
WebbrowserコントロールでHTMLのページにアクセスしたときに、
WebbrowserコントロールのDocumentプロパティ(オブジェクト)
がHTMLDocument型になるので、このDocumentプロパティをWebbrowserコントロールの
DocumentCompleteイベントでhDocにセットします。
これで、Webbrowserコントロールで表示されているページ上でのイベントが
VBで拾えるようになります。
hDocのonclickイベントプロシージャでアクティブエレメント(ActiveElement:クリックされたエレメント)
がアンカー(Anchor:<A>タグ)で、hrefプロパティ(リンク先のアドレス)がAVIファイルの場合に、MediaPlayerのUrlプロパティにhrefをセットすれば
MediaPlayer(OCX)で再生できるようになります。
また、こうすることにより、MediaPlayerが新しく起動してしまうということがなくなります。
(実のところ、どうして起動されなくなるのかはわかんないんだよね。プログラミングするとできちゃったってやつねw)
できました。
あとはブラウザ部分にWMPの再生や停止ボタンをつくったりしようとおもいます。
どうもありがとうございました。
ここの人たちは凄いな。普段は何をやられているのだろうか?
ツイート | ![]() |