C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: WMPのイベントを受け取れない


(過去ログ 79 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■46529 / inTopicNo.1)  WMPのイベントを受け取れない
  
□投稿者/ ao (5回)-(2010/02/04(Thu) 17:20:04)

分類:[.NET 全般] 

vs2005 C# win7 
Windows Media Player Control を使ってのプレーヤーを作ったのですが
再生開始、一時停止、停止のイベントを取得できずこまってます。

デザインからwmpのプロパティの雷マークで「PlayStateChange」イベントを登録
したのですが、実際プレーヤーで曲の再生、一時停止、停止などしても何も起こりません。
イベントの登録はいつもこのようにやってるので登録できてないとは思わないのですが。。

何か根本的なことが間違っているのでしょうか?
こんなことをタイマーで常にステータス監視しないといけないわけはないですよね?

このサイトに同じ件で質問がのってたのですが、回答がとくになく終わってしまってました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=43187&KLOG=74


●イベント登録したところのソース(デバッグ用なので何も書いてません)
        private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
        {
            switch ((WMPLib.WMPPlayState)e.newState)
            {
                case WMPLib.WMPPlayState.wmppsStopped:
                    //停止状態に入った時 
                    this.Text = "停止";
                    break;
                case WMPLib.WMPPlayState.wmppsPlaying:
                    //再生中に入った時
                    this.Text = "再生";
                    break;
                default:
                    break;
            }
        }

●念のためロード時にイベントハンドラを追加
 (↑だけで駄目だったので、後ほど↓を書いてみたが、駄目でした)
        private void Form1_Load(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(axWindowsMediaPlayer1_PlayStateChange);
        }

引用返信 編集キー/
■46533 / inTopicNo.2)  Re[1]: WMPのイベントを受け取れない
□投稿者/ Hongliang (554回)-(2010/02/04(Thu) 18:42:19)
普通はそれでいけるはずなんですがねぇ。

新しいプロジェクトを作る
WMP コントロールをツールボックスからD&Dでフォームに配置
WMP コントロールの雷アイコンで PlayStateChange イベントにハンドラを追加
そのハンドラには this.Text = e.newState.ToString(); だけ記述
フォームの雷アイコンで Load イベントにハンドラを追加
そのハンドラに this.axWindowsMediaPlayer1.URL = "メディアファイルがあるパス"; だけ記述

だけのものをビルドして実行してみてもフォームのタイトルは変わりませんか?
引用返信 編集キー/
■46536 / inTopicNo.3)  Re[2]: WMPのイベントを受け取れない
□投稿者/ ao (6回)-(2010/02/04(Thu) 20:38:41)
ありがとうございます。
取り急ぎそのパターンのみ確認してみたところ、フォームのタイトルは
再生開始で"9"、再生停止で"10"とちゃんと変化しました。

うーん。。
引用返信 編集キー/
■46537 / inTopicNo.4)  Re[3]: WMPのイベントを受け取れない
□投稿者/ Hongliang (555回)-(2010/02/04(Thu) 20:55:21)
> 再生開始で"9"、再生停止で"10"とちゃんと変化しました。
えぇ!?
wmppsPlaying = 3
wmppsStopped = 1
なんですけど……。ちなみに
wmppsTransitioning = 9
wmppsReady = 10
です。
// 私の環境(Vista/WMP11)ではちゃんと 3 と 1 になります。

イベント自体は発生してる(単に wmppsPlaying とかと一致しない)ってパターンかも?
もとのプロジェクトの方で switch の default ケースでも Form の Text に e.newState.ToString() を出してみたらどうなりますか?

Windows7 だと WMP12 でしたっけ。
WMP のバージョンでこのレベルのものが変わるとも思えませんけど……。
// 私の手元には Windows7 がないんで試せません。
引用返信 編集キー/
■46538 / inTopicNo.5)  Re[4]: WMPのイベントを受け取れない
□投稿者/ Hongliang (556回)-(2010/02/04(Thu) 20:59:05)
あ、それから再生中や停止中の、axWindowsMediaPlayer1.playState プロパティ自体はどうなっているでしょう?
引用返信 編集キー/
■46588 / inTopicNo.6)  Re[5]: WMPのイベントを受け取れない
□投稿者/ ao (7回)-(2010/02/05(Fri) 22:43:28)
No46538 (Hongliang さん) に返信
> あ、それから再生中や停止中の、axWindowsMediaPlayer1.playState プロパティ自体はどうなっているでしょう?

↓のコードで再生中、停止中、一時停止中それぞれ適切にMsgが出たので、
状態は判別できているようです。

private void デバック用ToolStripMenuItem_Click(object sender, EventArgs e)
{
switch (this.axWindowsMediaPlayer1.playState)
{
case WMPLib.WMPPlayState.wmppsStopped:
//停止状態に入った時 
MessageBox.Show("停止状態に入りました。");
setNext(nowPlayNo);
break;
case WMPLib.WMPPlayState.wmppsPlaying:
//再生中に入った時
MessageBox.Show("再生開始しました。");
break;
case WMPLib.WMPPlayState.wmppsPaused:
//一時停止中
MessageBox.Show("一時停止中。");
break;
default:
break;
}

>えぇ!?
>wmppsPlaying = 3
>wmppsStopped = 1
>なんですけど……。ちなみに
>wmppsTransitioning = 9
>wmppsReady = 10
>です。
>// 私の環境(Vista/WMP11)ではちゃんと 3 と 1 になります。
http://msdn.microsoft.com/ja-jp/library/cc411009.aspx
にたどりつきました。うーん。


>イベント自体は発生してる(単に wmppsPlaying とかと一致しない)ってパターンかも?
>もとのプロジェクトの方で switch の default ケースでも Form の Text に e.newState.ToString() を出してみたらどうなりますか?

元のプロジェクトだとFormのTextが何もかわりません。。。
やはりイベントが発生していないのか。。


少なくとも、開発環境、方法としては、このイベントを受け取ることができることがわかったので、
元のプロジェクトのほうで何か私がへまをしてしまったとしか思えなくなってきました。

ちょっとプロジェクト見直してみます。
(あるいわ、プロジェクトつくりなおすとか)
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -