一下是部分代码,我在主窗体的一个线程中调用获取进度并显示到进度条中:
 [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
        private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
        [DllImport("winmm.dll", EntryPoint = "mciGetDeviceID", CharSet = CharSet.Auto)]
        private static extern int mciGetDeviceID(string lpstrName);
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern int GetShortPathName(string lpszLongPath, string shortFile, int cchBuffer);
        private static Cplayer player;
        private int baseVolumn;
        private int trebleVolum;
        private int leftVolum;
        private int rightVolum;
        private int masterVolum;
        private int iPos;
        private int duration;
        private int currentPosition;
        bool Flags = false;             //当前时间
        public int CurrentPosition
        {
            get
            {
                int i = 255;
                string stringBuilder = "";
                mciSendString("status MediaFile position", stringBuilder, i, 0);
                return (int)(Convert.ToDouble(stringBuilder.ToString()) / 1000f); ;
            }
        }

解决方案 »

  1.   


    /// <summary>
            /// 当前时间
            /// </summary>
            public int CurrentPosition
            {
                get
                {
                    try
                    {
                        durLength = "";
                        durLength = durLength.PadLeft(128, Convert.ToChar(" "));
                        Win32.mciSendString("status media position", durLength, durLength.Length, 0);
                        durLength = durLength.Trim();
                        if (durLength == "") return 0;
                        mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
                        return mc.iPos;
                    }
                    catch { return 0; }
                }
            }
     /// <summary>
            /// 定位播放
            /// </summary>
            /// <param name="Position"></param>
            /// <returns></returns>
            public void SetMusicPos(bool isplay, int Position)
            {
                if (isplay)
                {
                    string MciCommand = string.Format("play media from {0}", Position * 1000);
                    int RefInt = Win32.mciSendString(MciCommand, null, 0, 0);
                }
                else
                {
                    string MciCommand = string.Format("seek  media to {0}", Position * 1000);
                    int RefInt = Win32.mciSendString(MciCommand, null, 0, 0);
                }
            } public class Win32
        {
            [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
            public static extern int GetShortPathName(
            string lpszLongPath,
            string shortFile,
            Int32 cchBuffer
            );        [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
            public static extern int mciSendString(
            string lpstrCommand,
            string lpstrReturnString,
            int uReturnLength,
            int hwndCallback
            );    }
    再试试