示例#1
0
        /// <summary>
        /// 取得MPC-BE登錄檔中所有歷史檔案資料
        /// </summary>
        /// <returns></returns>
        public static List <FilePosData> GetRecentFilePostDataList()
        {
            List <FilePosData> ret = new List <FilePosData>();

            RegistryKey key = Registry.CurrentUser.OpenSubKey(RegString.REG_KEY_MPC_BE_SETTINGS);

            if (key == null)
            {
                return(ret);
            }
            int recentNum = Convert.ToInt32(key.GetValue(RegString.REG_VALUE_NAME_MPC_BE_SETTINGS_RECENT_FILE_NUMBER, 0));

            RegistryKey keyRecent = Registry.CurrentUser.OpenSubKey(RegString.REG_KEY_MPC_BE_RECENT_FILES);

            for (int i = 1; i <= recentNum; i++)
            {
                FilePosData recentData    = new FilePosData();
                string      fileValueName = RegString.REG_VALUE_NAME_MPC_BE_RECENT_FILE + i.ToString();
                string      rawValue      = Convert.ToString(keyRecent.GetValue(fileValueName));
                recentData = ParseRecentFile(rawValue);
                if (recentData != null)
                {
                    ret.Add(recentData);
                }
            }

            key.Close();
            keyRecent.Close();

            return(ret);
        }
示例#2
0
        private static FilePosData ParseRecentFile(string value)
        {
            FilePosData ret = new FilePosData();

            string[] datas = value.Split('|');
            if (datas.Length < 4)
            {
                return(null);
            }

            ret.FullPath   = datas[0];
            ret.Position   = Convert.ToInt64(datas[1]);
            ret.AudioTrack = Convert.ToInt32(datas[2]);
            ret.Subtitle   = Convert.ToInt32(datas[3]);

            return(ret);
        }
示例#3
0
        /// <summary>
        /// 透過檔案路徑取得MPC-BE歷史檔案資料
        /// </summary>
        /// <param name="path">指定的檔案路徑</param>
        /// <returns>
        /// 回傳Tuple型別,其中Item1為歷史檔案資訊、Item2為取得歷史檔案的位置(index)。
        /// <para>若指定的路徑無法找到對應的歷史檔案資訊,則Item1為null,Item2為-1</para>
        /// </returns>
        public static Tuple <FilePosData, int> GetMpcBeRecentFileByPath(string path)
        {
            FilePosData recentData       = new FilePosData();
            Tuple <FilePosData, int> ret = new Tuple <FilePosData, int>(null, -1);

            try
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey(RegString.REG_KEY_MPC_BE_SETTINGS);
                if (key == null)
                {
                    return(ret);
                }
                int recentNum = Convert.ToInt32(key.GetValue(RegString.REG_VALUE_NAME_MPC_BE_SETTINGS_RECENT_FILE_NUMBER, 0));

                RegistryKey keyRecent = Registry.CurrentUser.OpenSubKey(RegString.REG_KEY_MPC_BE_RECENT_FILES);
                for (int i = 1; i <= recentNum; i++)
                {
                    string fileValueName = RegString.REG_VALUE_NAME_MPC_BE_RECENT_FILE + i.ToString();
                    string rawValue      = Convert.ToString(keyRecent.GetValue(fileValueName));
                    recentData = ParseRecentFile(rawValue);
                    if (recentData != null &&
                        recentData.FullPath == path)
                    {
                        ret = new Tuple <FilePosData, int>(recentData, i);
                        break;
                    }
                }

                key.Close();
                keyRecent.Close();
            }
            catch (Exception e)
            {
                Debug.WriteLine($"[GetMpcBeRecentFileByPath] {e.Message}");
            }

            return(ret);
        }