コード例 #1
0
        /// <summary>
        /// Return with Explorer registered application by file's extension (for editing)
        /// </summary>
        /// <param name="extension"></param>
        /// <param name="verb"></param>
        /// <returns></returns>
        /// <see cref="http://windevblog.blogspot.com/2008/09/get-default-application-in-windows-xp.html"/>
        /// <see cref="http://msdn.microsoft.com/en-us/library/cc144154%28VS.85%29.aspx"/>
        private string GetExplorerRegisteredApplication(string extension, string verb)
        {
            try
            {
                object obj;
                AssocCreate(CLSID_QueryAssociations, ref IID_IQueryAssociations, out obj);
                IQueryAssociations qa = (IQueryAssociations)obj;
                qa.Init(ASSOCF.INIT_DEFAULTTOSTAR, extension, UIntPtr.Zero, IntPtr.Zero);

                int size = 0;
                qa.GetString(ASSOCF.NOTRUNCATE, ASSOCSTR.COMMAND, verb, null, ref size);

                StringBuilder sb = new StringBuilder(size);
                qa.GetString(ASSOCF.NOTRUNCATE, ASSOCSTR.COMMAND, verb, sb, ref size);

                string cmd = sb.ToString();
                if (Utils.IsBlank(cmd))
                {
                    return(null);
                }

                if (cmd.Contains("\""))
                {
                    return(cmd.Substring(1, cmd.IndexOf("\"", 1) - 1));
                }
                return(cmd.Substring(0, cmd.IndexOf(" ")));
            }
            catch (Exception e)
            {
                return(null);
            }
        }
コード例 #2
0
ファイル: ShellAssociation.cs プロジェクト: tajbender/Vanara
 /// <summary>Initializes a new instance of the <see cref="ShellAssociation"/> class.</summary>
 /// <param name="pQA">The IQueryAssociations instance to use.</param>
 /// <param name="ext">The optional file extension. This should be in the ".ext" format.</param>
 internal ShellAssociation(IQueryAssociations pQA, string ext) : this(ext) => qassoc = pQA;
コード例 #3
0
 internal static extern uint AssocCreate(Guid clsid, ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out IQueryAssociations ppv);
コード例 #4
0
 public static extern HRESULT AssocCreate([In] Guid clsid, [In, MarshalAs(UnmanagedType.LPStruct)] Guid riid, out IQueryAssociations ppv);