Exemple #1
0
        /// <summary>
        /// Get a string resource given a resource Id
        /// </summary>
        /// <param name="resourceId">The resource Id</param>
        /// <returns>The string resource corresponding to the given resource Id. Returns null if the resource id
        /// is invalid or the string cannot be retrieved for any other reason.</returns>
        public static string GetStringResource(string resourceId)
        {
            string[] parts;
            string   library;
            int      index;

            if (string.IsNullOrEmpty(resourceId))
            {
                return(string.Empty);
            }

            // Known folder "Recent" has a malformed resource id
            // for its tooltip. This causes the resource id to
            // parse into 3 parts instead of 2 parts if we don't fix.
            resourceId = resourceId.Replace("shell32,dll", "shell32.dll");
            parts      = resourceId.Split(new char[] { ',' });

            library = parts[0];
            library = library.Replace(@"@", string.Empty);
            library = Environment.ExpandEnvironmentVariables(library);
            IntPtr handle = CoreNativeMethods.LoadLibrary(library);

            parts[1] = parts[1].Replace("-", string.Empty);
            index    = int.Parse(parts[1], CultureInfo.InvariantCulture);

            StringBuilder stringValue = new StringBuilder(255);
            int           retval      = CoreNativeMethods.LoadString(handle, index, stringValue, 255);

            return(retval != 0 ? stringValue.ToString() : null);
        }
 /// <summary>
 /// Release the handle
 /// </summary>
 /// <returns>true if handled is release successfully, false otherwise</returns>
 protected override bool ReleaseHandle()
 {
     if (CoreNativeMethods.DeleteObject(handle))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
        /// <summary>
        /// Release the handle
        /// </summary>
        /// <returns>true if handled is release successfully, false otherwise</returns>
        protected override bool ReleaseHandle()
        {
            if (IsInvalid)
            {
                return(true);
            }

            if (CoreNativeMethods.DestroyWindow(handle) != 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }