dポイントプレゼントキャンペーン実施中!

お世話になります。

以前、WMPの終了検知を教えていただいたのですが、教えていただいた方法の
他にも、直接終了イベントが発生する方法もあるみたいですので、
その使用方法(実装方法)を教えていただきたいと思います。

下記のサイトのように、イベントとして発生するようです。

http://msdn.microsoft.com/ja-jp/library/system.w …

現在は、下記のような方法で取得しています。

private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (e.newState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
{
MessageBox.Show("終わり");
}
}

この方法以外に、直接イベントを拾う方法を教えていただけますでしょうか。

初心者で申し訳ありません。

よろしくお願いいたします。

A 回答 (1件)

イベントハンドラの使い方について勉強して欲しいところですが……。


http://www.atmarkit.co.jp/fdotnet/csharp_abc/csh …

http://www.ipentec.com/document/document.aspx?pa …
に書かれている方法でSystem.Windows.Mediaが使える状態になったとして、
MediaPlayerクラスのインスタンスを作成した時にイベントハンドラを登録します。

 mp = new MediaPlayer();
 mp.MediaEnded += new EventHandler(mp_MediaEnded);

こんな感じですかね。
VisualStudioを使っているのならば"+="まで入力した所でTABキーによる補完を実行すると、
イベントハンドラのメソッド(のひな形)まで作成してくれます。
# TABキー2回押して下さい。(VisualStudio C# 2010 ExpressEditionで確認。)

再生が終了するとMediaEnded イベントが発生し、設定されたイベントハンドラがコールされます。
コールされたイベントハンドラからフォームのコントロールってそのまま操作出来なかったかと思われますが…。
# SerialPortのDataReceivedイベントで、デリゲートとInvokeでデータ引き渡していた記憶が。
# キーワードで検索して下さいな。
# http://hippos-lab.com/blog/node/337 とか参考になりますかねぇ…。
    • good
    • 1
この回答へのお礼

早速の回答、ありがとうございます。

おかげさまで、何とか実現できました。
今までVSの自動クリックイベントの追加に慣れきっていたため、
手書きでイベントを追加する方法が解りませんでした^^;

これからは、極力手書きでできるようにします。

ありがとうございました。

お礼日時:2013/08/22 10:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!