利用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的基本属性及方法

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/zxlovenet/p/2996970.html