예제 #1
0
        /// <summary>
        ///     Removes single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
        /// </summary>
        /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
        public void RemoveVerb(ProgramVerb verb)
        {
            if (verb == null)
            {
                throw new NullReferenceException();
            }

            RemoveVerb(verb.Name);
        }
예제 #2
0
        /// <summary>
        ///     Adds single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
        /// </summary>
        /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
        protected void AddVerbpublic(ProgramVerb verb)
        {
            var root       = Registry.ClassesRoot;
            var openSubKey = root.OpenSubKey(ProgId);

            if (openSubKey != null)
            {
                var key = openSubKey.OpenSubKey("shell", true);
                if (key == null)
                {
                    var registryKey = root.OpenSubKey(ProgId, true);
                    if (registryKey != null)
                    {
                        key = registryKey.CreateSubKey("shell");
                    }
                }

                if (key != null)
                {
                    var tmpkey = key.OpenSubKey(verb.Name, true) ?? key.CreateSubKey(verb.Name);
                    key = tmpkey;

                    if (key != null)
                    {
                        tmpkey = key.OpenSubKey("command", true) ?? key.CreateSubKey("command");
                        if (tmpkey != null)
                        {
                            tmpkey.Close();
                        }
                        key.Close();
                    }
                }
            }
            root.Close();

            ShellNotification.NotifyOfChange();
        }
예제 #3
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="description">Friendly description of file type.</param>
 /// <param name="editFlags"><see cref="EditFlags" /> for program file type.</param>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verbs.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(string description, EditFlags editFlags, ProgramVerb verb)
 {
     return(Create(description, editFlags, new[] { verb }));
 }
예제 #4
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(ProgramVerb verb)
 {
     return(Create(string.Empty, EditFlags.None, new[] { verb }));
 }
예제 #5
0
 /// <summary>
 ///     Adds single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
 /// </summary>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
 public void AddVerb(ProgramVerb verb)
 {
     AddVerbpublic(verb);
 }
예제 #6
0
        /// <summary>
        ///     Adds single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
        /// </summary>
        /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
        protected void AddVerbpublic(ProgramVerb verb)
        {
            var root = Registry.ClassesRoot;
            var openSubKey = root.OpenSubKey(ProgId);
            if (openSubKey != null)
            {
                var key = openSubKey.OpenSubKey("shell", true);
                if (key == null)
                {
                    var registryKey = root.OpenSubKey(ProgId, true);
                    if (registryKey != null)
                        key = registryKey.CreateSubKey("shell");
                }

                if (key != null)
                {
                    var tmpkey = key.OpenSubKey(verb.Name, true) ?? key.CreateSubKey(verb.Name);
                    key = tmpkey;

                    if (key != null)
                    {
                        tmpkey = key.OpenSubKey("command", true) ?? key.CreateSubKey("command");
                        if (tmpkey != null)
                        {
                            tmpkey.Close();
                        }
                        key.Close();
                    }
                }
            }
            root.Close();

            ShellNotification.NotifyOfChange();
        }
예제 #7
0
        /// <summary>
        ///     Sets an array of <see cref="ProgramVerb" /> that define the verbs supported by this ProgID
        /// </summary>
        /// <param name="verbs">Array of <see cref="ProgramVerb" /> that contains verbs to be set.</param>
        protected void SetVerbs(ProgramVerb[] verbs)
        {
            if (!Exists)
                throw new Exception("Extension does not exist");

            var root = Registry.ClassesRoot;
            var key = root.OpenSubKey(ProgId, true);
            if (key != null)
            {
                var tmpKey = key.OpenSubKey("shell", true);

                if (tmpKey != null)
                    key.DeleteSubKeyTree("shell");

                tmpKey = key.CreateSubKey("shell");
                foreach (var verb in verbs)
                {
                    if (tmpKey != null)
                    {
                        var newVerb = tmpKey.CreateSubKey(verb.Name.ToLower());
                        if (newVerb != null)
                        {
                            var command = newVerb.CreateSubKey("command");
                            if (command != null)
                            {
                                command.SetValue(string.Empty, verb.Command, RegistryValueKind.ExpandString);
                                command.Close();
                            }
                        }
                        if (newVerb != null)
                            newVerb.Close();
                    }
                }
            }

            ShellNotification.NotifyOfChange();
        }
예제 #8
0
        /// <summary>
        ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
        /// </summary>
        /// <param name="description">Friendly description of file type.</param>
        /// <param name="editFlags"><see cref="EditFlags" /> for program file type.</param>
        /// <param name="verbs">Array of <see cref="ProgramVerb" /> that contains supported verbs.</param>
        /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
        public ProgramAssociationInfo Create(string description, EditFlags editFlags, ProgramVerb[] verbs)
        {
            if (Exists)
                Delete();

            Create();

            if (description != string.Empty)
                Description = description;

            if (editFlags != EditFlags.None)
                EditFlags = editFlags;

            Verbs = verbs;

            return this;
        }
예제 #9
0
        /// <summary>
        ///     Removes single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
        /// </summary>
        /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
        public void RemoveVerb(ProgramVerb verb)
        {
            if (verb == null)
                throw new NullReferenceException();

            RemoveVerb(verb.Name);
        }
예제 #10
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="description">Friendly description of file type.</param>
 /// <param name="editFlags"><see cref="EditFlags" /> for program file type.</param>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verbs.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(string description, EditFlags editFlags, ProgramVerb verb)
 {
     return Create(description, editFlags, new[] {verb});
 }
예제 #11
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="description">Friendly description of file type.</param>
 /// <param name="verbs">Array of <see cref="ProgramVerb" /> that contains supported verbs.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(string description, ProgramVerb[] verbs)
 {
     return Create(description, EditFlags.None, verbs);
 }
예제 #12
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="verbs">Array of <see cref="ProgramVerb" /> that contains supported verbs.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(ProgramVerb[] verbs)
 {
     return Create(string.Empty, EditFlags.None, verbs);
 }
예제 #13
0
 /// <summary>
 ///     Creates actual Programmatic Identifier key in registry that is used by other extensions.
 /// </summary>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
 /// <returns><see cref="ProgramAssociationInfo" /> instance referring to specified extension.</returns>
 public ProgramAssociationInfo Create(ProgramVerb verb)
 {
     return Create(string.Empty, EditFlags.None, new[] {verb});
 }
예제 #14
0
 /// <summary>
 ///     Adds single <see cref="ProgramVerb" /> that define the verb supported by this ProgID.
 /// </summary>
 /// <param name="verb">Single <see cref="ProgramVerb" /> that contains supported verb.</param>
 public void AddVerb(ProgramVerb verb)
 {
     AddVerbpublic(verb);
 }