利用WMPLib在Windows mobile下播放Mp3收藏

利用WMPLib在Windows mobile下播放Mp3收藏

程序示例(C#智能设备应用程序):

必须添加对wmp.dll的引用(项目->添加引用->windows/system32/wmp.dll)。

源文件:

CMediaControl.cs:定义了控制媒体播放的类CMediaControl。

using System.Collections.Generic;

using System;

using System.Windows.Forms;

public class CMediaControl

{

    private WMPLib.WindowsMediaPlayer player;

    private String curFileName;                 //Current media file name.

    private bool isPaused;                      //Is current state pause?

    private double curPos;                      //Current time position, use to restore play from pause status.

    

    public CMediaControl()

    {

        player = new WMPLib.WindowsMediaPlayer();

        player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);

        player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);

        curFileName = "";

        isPaused = false;

        curPos = 0.0;

    }

    private void Player_PlayStateChange(int NewState)

    {

        if(WMPLib.WMPPlayState.wmppsPaused == (WMPLib.WMPPlayState)NewState)

        {

            isPaused = true;

        }

        else if(WMPLib.WMPPlayState.wmppsPlaying == (WMPLib.WMPPlayState)NewState)

        {

            if(isPaused)

            {

                isPaused = false;

                player.controls.currentPosition += curPos;

                curPos = 0;

            }

        }

        //else if(WMPLib.WMPPlayState.wmppsStopped == (WMPLib.WMPPlayState)NewState)

        //{

        //    isPaused = false;

        //}

    }

    private void Player_MediaError(object pMediaObject)

    {

        MessageBox.Show("Cannot play media file.");

    }

    public int OpenMediaFile(String fileName)

    {

        int ret = 0;

        //Validate fileName

        //Filename legal

        curFileName = fileName;

        player.URL = curFileName;

        

    return ret;

    }

    public int SetVolumn(int vol)

    {

        int ret = 0;

        //Validate vol

        if((vol < 0) || (vol >100))

        {

        //Volumn is highest or lowest.

    return ret;

        }

        //vol legal

        player.settings.volume = vol;

    

    return ret;

    }

    public int GetVolumn()

    {

        int ret = 0;

        ret = player.settings.volume;

    return ret;

    }

    public int MediaPlay()

    {

        int ret = 0;

        player.controls.play();

    return ret;

    }

    public int MediaPause()

    {

        int ret = 0;

        player.controls.pause();

        curPos = player.controls.currentPosition;

    return ret;

    }

    public int MediaStop()

    {

        int ret = 0;

        player.controls.stop();

    return ret;

    }

    public double MediaGetPosition()

    {

        double ret = 0;

        

        if(WMPLib.WMPPlayState.wmppsPlaying != player.playState)

        {

    return ret;

        }

        double curPos = player.controls.currentPosition;

        double totalLen = player.currentMedia.duration;

        ret = (curPos / totalLen) * 100;

    return ret;

    }

    public string MediaGetInfo()

    {

        string mediaInfo = "";

        //mediaInfo += player.currentMedia.name;

        //mediaInfo += "@";

        mediaInfo += "Title: " + player.currentMedia.getItemInfo("Title");

        mediaInfo += "@";

        mediaInfo += "Author: " + player.currentMedia.getItemInfo("Author");

        mediaInfo += "@";

        mediaInfo += "Description: " + player.currentMedia.getItemInfo("Description");

        mediaInfo += "@";

        mediaInfo += "Duration: " + player.currentMedia.getItemInfo("Duration");

        mediaInfo += "@";

        mediaInfo += "FileType: " + player.currentMedia.getItemInfo("FileType");

        mediaInfo += "@";

        mediaInfo += "FileSize: " + player.currentMedia.getItemInfo("FileSize");

    return mediaInfo;

    }

    public int MediaFastForward(int tick)

    {

        int ret = 0;

        //player.controls.fastForward();

        player.controls.currentPosition += tick;

        //MessageBox.Show("Don't support this function!");

    return ret;

    }

    public int MediaFastReverse(int tick)

    {

        int ret = 0;

        //player.controls.fastReverse();

        player.controls.currentPosition -= tick;

        //MessageBox.Show("Don't support this function!");

    return ret;

    }

}

WMPLib的基本属性及方法见附录,完整的工程下载地址为:

 

 

附录

WMPLib的基本属性及方法

URL: (String); 指定媒体位置,本机或网络地址 

uiMode:(String); 播放器界面模式,可为Full, Mini, None, Invisible 

playState:(integer); 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 

enableContextMenu:(Boolean); 启用/禁用右键菜单 

fullScreen:boolean; (是否全屏显示) 

[controls] wmp.controls //播放器基本控制 

controls.play; 播放 

controls.pause; 暂停 

controls.stop; 停止 

controls.currentPosition:double; 当前进度 

controls.currentPositionString:string; 当前进度,字符串格式。如“00:23” 

controls.fastForward; 快进 

controls.fastReverse; 快退 

controls.next; 下一曲 

controls.previous; 上一曲 

[settings] wmp.settings //播放器基本设置 

settings.volume:integer; 音量,0-100 

settings.autoStart:Boolean; 是否自动播放 

settings.mute:Boolean; 是否静音 

settings.playCount:integer; 播放次数 

[currentMedia] wmp.currentMedia //当前媒体属性 

currentMedia.duration:double; 媒体总长度 

currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24” 

currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术       家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 

currentMedia.setItemInfo(const string); 通过属性名设置媒体信息 

currentMedia.name:string; 同 currentMedia.getItemInfo("Title") 

[currentPlaylist] wmp.currentPlaylist //当前播放列表属性 

currentPlaylist.count:integer; 当前播放列表所包含媒体数 

currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia 

原文地址:https://www.cnblogs.com/xianyin05/p/1452834.html