/// <summary>
        /// Takes two tokens and compares them using version info.
        /// Note only tokens that match on Vendor, ProductLine, Language get compared, the pfDidCompare flag indicates this
        /// </summary>
        private static int CompareTokenVersions(ObjectToken token1, ObjectToken token2, out bool pfDidCompare)
        {
            pfDidCompare = false;

            RegistryDataKey attributes1 = null;
            RegistryDataKey attributes2 = null;

            attributes1 = token1.Attributes;
            attributes2 = token2.Attributes;

            // get vendor, version, language, product line for token 1
            if (attributes1 != null)
            {
                string vendor1;
                string productLine1;
                string version1;
                string language1;
                attributes1.TryGetString("Vendor", out vendor1);
                attributes1.TryGetString("ProductLine", out productLine1);
                attributes1.TryGetString("Version", out version1);
                attributes1.TryGetString("Language", out language1);

                // get vendor, version, language, product line for token 2
                if (attributes2 != null)
                {
                    string vendor2;
                    string productLine2;
                    string version2;
                    string language2;
                    attributes2.TryGetString("Vendor", out vendor2);
                    attributes2.TryGetString("ProductLine", out productLine2);
                    attributes2.TryGetString("Version", out version2);
                    attributes2.TryGetString("Language", out language2);

                    if (((string.IsNullOrEmpty(vendor1) && string.IsNullOrEmpty(vendor2)) || (!string.IsNullOrEmpty(vendor1) && !string.IsNullOrEmpty(vendor2) && vendor1 == vendor2)) &&
                        ((string.IsNullOrEmpty(productLine1) && string.IsNullOrEmpty(productLine2)) || (!string.IsNullOrEmpty(productLine1) && !string.IsNullOrEmpty(productLine2) && productLine1 == productLine2)) &&
                        ((string.IsNullOrEmpty(language1) && string.IsNullOrEmpty(language2)) || (!string.IsNullOrEmpty(language1) && !string.IsNullOrEmpty(language2) && language1 == language2)))
                    {
                        pfDidCompare = true;
                        return(CompareVersions(version1, version2));
                    }
                    else
                    {
                        return(-1);
                    }
                }
                else
                {
                    return(1);
                }
            }
            else
            {
                return(-1);
            }
        }
Beispiel #2
0
        public override bool Equals(object obj)
        {
            ObjectToken objectToken = obj as ObjectToken;

            if (objectToken != null)
            {
                return(string.Compare(base.Id, objectToken.Id, StringComparison.OrdinalIgnoreCase) == 0);
            }
            return(false);
        }
Beispiel #3
0
        internal static ObjectToken DefaultToken(string category)
        {
            Helpers.ThrowIfEmptyOrNull(category, "category");
            ObjectToken objectToken = null;

            objectToken = DefaultToken("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Speech\\" + category, "DefaultTokenId");
            if (objectToken == null)
            {
                objectToken = DefaultToken("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\" + category, "DefaultTokenId");
            }
            return(objectToken);
        }
Beispiel #4
0
 private static ObjectToken GetHighestTokenVersion(ObjectToken token, ObjectToken tokenSeed, string[] criterias)
 {
     if (tokenSeed.MatchesAttributes(criterias))
     {
         bool pfDidCompare;
         int  num = CompareTokenVersions(tokenSeed, token, out pfDidCompare);
         if (pfDidCompare && num > 0)
         {
             token = tokenSeed;
         }
     }
     return(token);
 }
        private static ObjectToken DefaultToken(string category, string defaultTokenIdValueName)
        {
            ObjectToken token = GetPreference(category, defaultTokenIdValueName);

            if (token != null)
            {
                // Now do special check to see if we have another token from the same vendor with a
                // more recent version - if so use that.

                // First lets change the category to LOCAL_MACHINE
                using (ObjectTokenCategory tokenCategory = ObjectTokenCategory.Create(category))
                {
                    if (tokenCategory != null)
                    {
                        if (token != null)
                        {
                            foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory)
                            {
                                token = GetHighestTokenVersion(token, tokenSeed, s_asVersionDefault);
                            }
                        }
                        else
                        {
                            // If there wasn't a default, just pick one with the proper culture
                            string[] sCultureId = new string[] { string.Format(CultureInfo.InvariantCulture, "{0:x}", CultureInfo.CurrentUICulture.LCID) };

                            foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory)
                            {
                                if (tokenSeed.MatchesAttributes(sCultureId))
                                {
                                    token = tokenSeed;
                                    break;
                                }
                            }

                            // Still nothing, picks the first one
                            if (token == null)
                            {
                                foreach (ObjectToken tokenSeed in (IEnumerable <ObjectToken>)tokenCategory)
                                {
                                    token = tokenSeed;
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            return(token);
        }
Beispiel #6
0
        private static ObjectToken DefaultToken(string category, string defaultTokenIdValueName)
        {
            ObjectToken objectToken = GetPreference(category, defaultTokenIdValueName);

            if (objectToken != null)
            {
                using (ObjectTokenCategory objectTokenCategory = ObjectTokenCategory.Create(category))
                {
                    if (objectTokenCategory == null)
                    {
                        return(objectToken);
                    }
                    if (objectToken != null)
                    {
                        foreach (ObjectToken item in (IEnumerable <ObjectToken>)objectTokenCategory)
                        {
                            objectToken = GetHighestTokenVersion(objectToken, item, asVersionDefault);
                        }
                        return(objectToken);
                    }
                    string[] sAttributes = new string[1]
                    {
                        string.Format(CultureInfo.InvariantCulture, "{0:x}", new object[1]
                        {
                            CultureInfo.CurrentUICulture.LCID
                        })
                    };
                    foreach (ObjectToken item2 in (IEnumerable <ObjectToken>)objectTokenCategory)
                    {
                        if (item2.MatchesAttributes(sAttributes))
                        {
                            objectToken = item2;
                            break;
                        }
                    }
                    if (objectToken == null)
                    {
                        using (IEnumerator <ObjectToken> enumerator3 = ((IEnumerable <ObjectToken>)objectTokenCategory).GetEnumerator())
                        {
                            if (enumerator3.MoveNext())
                            {
                                return(enumerator3.Current);
                            }
                            return(objectToken);
                        }
                    }
                    return(objectToken);
                }
            }
            return(objectToken);
        }
        private static ObjectToken GetHighestTokenVersion(ObjectToken token, ObjectToken tokenSeed, string[] criterias)
        {
            // if override and higher version - new preferred.
            bool fOverride = tokenSeed.MatchesAttributes(criterias);

            if (fOverride)
            {
                bool fDidCompare;
                int  lRes = CompareTokenVersions(tokenSeed, token, out fDidCompare);

                if (fDidCompare && lRes > 0)
                {
                    token = tokenSeed;
                }
            }
            return(token);
        }
        internal static ObjectToken DefaultToken(string category)
        {
            Helpers.ThrowIfEmptyOrNull(category, nameof(category));

            ObjectToken token = null;

            // Try first to get the preferred token for the current user
            token = DefaultToken(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Speech\" + category, _defaultTokenIdValueName);

            // IF failed try to get it for the local machine
            if (token == null)
            {
                token = DefaultToken(SpeechRegistryKey + category, _defaultTokenIdValueName);
            }

            return(token);
        }
        /// <summary>
        /// Try to get the preferred token for a category
        /// </summary>
        private static ObjectToken GetPreference(string category, string defaultLocation)
        {
            ObjectToken token = null;

            using (ObjectTokenCategory tokenCategory = ObjectTokenCategory.Create(category))
            {
                if (tokenCategory != null)
                {
                    string sToken;
                    if (tokenCategory.TryGetString(defaultLocation, out sToken))
                    {
                        token = tokenCategory.OpenToken(sToken);
                    }
                }
            }
            return(token);
        }
Beispiel #10
0
        private static ObjectToken GetPreference(string category, string defaultLocation)
        {
            ObjectToken result = null;

            using (ObjectTokenCategory objectTokenCategory = ObjectTokenCategory.Create(category))
            {
                if (objectTokenCategory == null)
                {
                    return(result);
                }
                string value;
                if (objectTokenCategory.TryGetString(defaultLocation, out value))
                {
                    return(objectTokenCategory.OpenToken(value));
                }
                return(result);
            }
        }
Beispiel #11
0
        private static int CompareTokenVersions(ObjectToken token1, ObjectToken token2, out bool pfDidCompare)
        {
            pfDidCompare = false;
            RegistryDataKey registryDataKey  = null;
            RegistryDataKey registryDataKey2 = null;

            registryDataKey  = token1.Attributes;
            registryDataKey2 = token2.Attributes;
            if (registryDataKey != null)
            {
                string value;
                registryDataKey.TryGetString("Vendor", out value);
                string value2;
                registryDataKey.TryGetString("ProductLine", out value2);
                string value3;
                registryDataKey.TryGetString("Version", out value3);
                string value4;
                registryDataKey.TryGetString("Language", out value4);
                if (registryDataKey2 != null)
                {
                    string value5;
                    registryDataKey2.TryGetString("Vendor", out value5);
                    string value6;
                    registryDataKey2.TryGetString("ProductLine", out value6);
                    string value7;
                    registryDataKey2.TryGetString("Version", out value7);
                    string value8;
                    registryDataKey2.TryGetString("Language", out value8);
                    if (((string.IsNullOrEmpty(value) && string.IsNullOrEmpty(value5)) || (!string.IsNullOrEmpty(value) && !string.IsNullOrEmpty(value5) && value == value5)) && ((string.IsNullOrEmpty(value2) && string.IsNullOrEmpty(value6)) || (!string.IsNullOrEmpty(value2) && !string.IsNullOrEmpty(value6) && value2 == value6)) && ((string.IsNullOrEmpty(value4) && string.IsNullOrEmpty(value8)) || (!string.IsNullOrEmpty(value4) && !string.IsNullOrEmpty(value8) && value4 == value8)))
                    {
                        pfDidCompare = true;
                        return(CompareVersions(value3, value7));
                    }
                    return(-1);
                }
                return(1);
            }
            return(-1);
        }
Beispiel #12
0
        /// <summary>
        /// Tests whether two AutomationIdentifier objects are equivalent
        /// </summary>
        public override bool Equals(object obj)
        {
            ObjectToken token = obj as ObjectToken;

            return(token != null && string.Equals(Id, token.Id, StringComparison.OrdinalIgnoreCase));
        }