-8

このコード スニペットは機能しません

using WMPLib;
class Program
{
    static void Main(string[] args)
    {
        // this file is called Interop.WMPLib.dll
        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = @"c:\Wildlife.wmv";
        Console.WriteLine("Duration = " + wmp.currentMedia.durationString);
        // write named attributes
        Console.ReadKey();
    }
}

それは私にゼロを与えるだけです。誰でも助けることができますか?

4

1 に答える 1

4

[編集]

これは、Hans Passant のコメントの後の作業コードであり、コンパイルしてテストするのに役立ちました。このコードは、ムービーの長さをコンパイルして表示します。

using System;
using WMPLib;

namespace MediaPlayer
{
    class Program
    {
        static WindowsMediaPlayer wmp = new WindowsMediaPlayer();

        static void Main(string[] args)
        {
            wmp.URL = @"c:\Wildlife.wmv";
            wmp.PlayStateChange += new _WMPOCXEvents_PlayStateChangeEventHandler(wmp_PlayStateChange);
            Console.ReadKey();
        }

        static void wmp_PlayStateChange(int NewState)
        {
            if (NewState == 3)
            {
                Console.WriteLine("Duration = " + wmp.currentMedia.durationString);
            }
        }
    }
}

[古い回答]

私はこのことについて何も知りませんが、ここに私の見解があります。プレーヤーの状態は、まだメディアで報告できるレベルではありません。以下のコードは、ここで一緒にスローされるだけで、コンパイルすらできない可能性があります。MSDN から:

ユーザーのライブラリにないファイルのデュレーションを取得するには、Windows Media Player がファイルを開くのを待つ必要があります。つまり、現在の OpenState は MediaOpen と等しくなければなりません。これは、Player.OpenStateChange イベントを処理するか、Player.openState の値を定期的にチェックすることで確認できます。

using WMPLib;
class Program
{
    static void Main(string[] args)
    {
        // this file is called Interop.WMPLib.dll
        WindowsMediaPlayer wmp = new WindowsMediaPlayer();
        wmp.URL = @"c:\TORRENT.KG\Assault.girls.2009.DVDRip.Rus.Eng.avi";
        wmp.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wmp_PlayStateChange);
        Console.ReadKey();
    }

    void wmp_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (e.newState == 3)
        {
            Console.WriteLine("Duration = " + wmp.currentMedia.durationString);
        }
    }
}
于 2010-12-10T18:34:00.260 に答える