zoukankan      html  css  js  c++  java
  • 使用Mci指令打造你自己的媒体播放器

    使用Mci指令打造你自己的媒体播放器
     
      电子科技大学软件学院03级 周银辉
                 转载请注明出处

    1.说明:
      网上mic的文章一大堆,但大多天下文章一大抄。这里说点实际的,在C#中如何使用它来做个播放器。

    2.如何发送指令:
      /// <summary>
      /// 发送mci指令
      /// </summary>
      /// <param name="command">要发送的指令</param>
      /// <param name="returnString">返回串</param>
      /// <param name="returnLength">缓冲区大小</param>
      /// <param name="hwndCallBack">回调。一般设置为0</param>
      /// <returns></returns>
      [DllImport("winmm.dll",EntryPoint="mciSendString", CharSet=CharSet.Auto)]
      public static extern int mciSendString(string command, string returnString,
       int returnLength, int hwndCallBack);
    这里的参数command就是我们要发送的指令
    以后我们都是通过这个mcisendString函数发送指令进行媒体操作

    3. 指令是什么样的?
       比sql语句还有简单,比如我们的音乐文件是 path = "c:\\my.mp3",现在我们要发送一条指令打开该文件以便以后播放它,那么我们的指令就是 command = "open \"" +path+ "\"" +" alias song";注意path两边要有引号扩起来,这表示它是一个参数(这与命令行参数类似),alias 是取别名,我们将 
    "c:\\my.mp3"取了一个别名叫做song,这样我们以后就可以针对song进行操作了

    4. 最简单的: 打开 -> 播放 -> 关闭

       /// <summary>
      /// 打开指定的音乐文件
      /// 打开时别名为song
      /// </summary>
      /// <param name="path">文件的完整路径</param>
      public void Open(string path)
      {
       if(!File.Exists(path))
       {
        MessageBox.Show("文件不存在\n"+path);
        return;
       }

       MciPlayer.mciSendString("close all","",0,0);
       MciPlayer.mciSendString("open \"" +path+ "\"" +" alias song", "", 0,0);            

      }

       /// <summary>
      /// 从头播放MciPlayer.Open打开的文件,请先确保文件已经打开
      /// </summary>
      public void Play()
      {
       MciPlayer.mciSendString("play song", "", 0, 0);
      }

       /// <summary>
      /// 停止播放
      /// </summary>
      public void Stop()
      {
       MciPlayer.mciSendString("stop song", "", 0, 0);
       MciPlayer.mciSendString("close song","", 0, 0);
      }

    5. 更多的
       mci指令很多,包括视频控制等,可以说是庞杂,但幸运的是你可以在msdn中不使用筛选器,在索引中输入MCI Command Strings便能查找到相关的信息

      这是我做的一个简单的播放器(支持视频)
     player_mini.bmp
    如果需要源代码的话,可以email: yinhui_zhou@yahoo.com.cn

  • 相关阅读:
    .net remoting 易则易知,简则易从
    委托和匿名方法学习心得
    (4)插入排序之二 折半插入排序
    (2)排序概述
    (3)插入排序之一 直接插入排序
    (5)插入排序之三 2路插入排序
    (9)交换排序之二 快速排序
    (7)插入排序之五 希尔排序
    (6)插入排序之四 表插入排序
    (8)交换排序之一 起泡排序
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/391368.html
Copyright © 2011-2022 走看看