Example #1
0
        public ApplicationInfo PathToApp(string file, bool allowNonApps)
        {
            ApplicationInfo ai      = new ApplicationInfo();
            string          fileExt = Path.GetExtension(file);

            if (allowNonApps || ExecutableExtensions.Contains(fileExt, StringComparer.OrdinalIgnoreCase))
            {
                try
                {
                    ai.Name = Path.GetFileNameWithoutExtension(file);
                    ai.Path = file;
                    string target = string.Empty;

                    if (fileExt.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
                    {
                        Interop.Shell.Link link = new Interop.Shell.Link(file);
                        target = link.Target;
                    }
                    else
                    {
                        target = file;
                    }

                    ai.Target = target;

                    // remove items that we can't execute.
                    if (!allowNonApps)
                    {
                        if (!String.IsNullOrEmpty(target) && !ExecutableExtensions.Contains(Path.GetExtension(target), StringComparer.OrdinalIgnoreCase))
                        {
                            Debug.WriteLine("Not an app: " + file + ": " + target);
                            return(null);
                        }

                        // remove things that aren't apps (help, uninstallers, etc)
                        foreach (string word in excludedNames)
                        {
                            if (ai.Name.ToLower().Contains(word))
                            {
                                Debug.WriteLine("Excluded item: " + file + ": " + target);
                                return(null);
                            }
                        }
                    }

                    return(ai);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Error creating ApplicationInfo object in appgrabber. " + ex.Message);
                    return(null);
                }
            }

            return(null);
        }
Example #2
0
        private List <ApplicationInfo> generateAppListRecursing(DirectoryInfo directory)
        {
            //_logger.Debug("Scanning directory {0}", directory.FullName);
            List <ApplicationInfo> rval = new List <ApplicationInfo>();

            foreach (DirectoryInfo subfolder in directory.GetDirectories())
            {
                rval.AddRange(generateAppListRecursing(subfolder));
            }

            foreach (FileInfo file in directory.GetFiles())
            {
                //_logger.Debug("Interrogating file {0}", file.FullName);
                ApplicationInfo ai  = new ApplicationInfo();
                String          ext = Path.GetExtension(file.FullName);

                if (executableExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase))
                {
                    try
                    {
                        ai.Name = Path.GetFileNameWithoutExtension(file.FullName);
                        ai.Path = file.FullName;
                        string target = string.Empty;

                        if (file.Extension.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
                        {
                            //_logger.Debug("Attempting to interrogate shortcut to application: {0}", file.FullName);
                            Interop.Shell.Link link = new Interop.Shell.Link(file.FullName);
                            target = link.Target;
                        }
                        else
                        {
                            target = file.FullName;
                        }

                        if (!executableExtensions.Contains(Path.GetExtension(target), StringComparer.OrdinalIgnoreCase))
                        {
                            System.Diagnostics.Debug.WriteLine(file.Name + ": " + target);
                            continue;
                        }

                        //_logger.Debug("Attempting to get associated icon for {0}", file.FullName);
                        //ai.Icon = ai.GetAssociatedIcon();
                        rval.Add(ai);
                    }
                    catch (Exception)
                    {
                        //Output the reason to the debugger
                        //_logger.Debug("Error creating ApplicationInfo object in appgrabber. Details: {0}\n{1}", ex.Message, ex.StackTrace);
                    }
                }
            }

            return(rval);
        }
Example #3
0
        /// <summary>
        /// Gets an ImageSource object representing the associated icon of a file.
        /// </summary>
        public ImageSource GetAssociatedIcon()
        {
            String ext = System.IO.Path.GetExtension(this.Path);

            if (ext.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
            {
                Interop.Shell.Link link  = new Interop.Shell.Link(this.Path);
                IntPtr             hIcon = Interop.Shell.GetHIcon(link.IconFile, link.IconIndex);
                if (hIcon != IntPtr.Zero)
                {
                    return(WpfWin32ImageConverter.GetImageFromHIcon(hIcon));
                }
            }
            return(WpfWin32ImageConverter.GetImageFromAssociatedIcon(this.Path));
        }
Example #4
0
        /*private List<ApplicationInfo> generateAppListRecursing(DirectoryInfo directory)
        {
            List<ApplicationInfo> rval = new List<ApplicationInfo>();

            foreach (DirectoryInfo subfolder in directory.GetDirectories())
            {
                rval.AddRange(generateAppListRecursing(subfolder));
            }

            foreach (FileInfo file in directory.GetFiles())
            {
                ApplicationInfo ai = new ApplicationInfo();
                String ext = Path.GetExtension(file.FullName);

                if (executableExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase))
                {
                    try
                    {
                        ai.Name = Path.GetFileNameWithoutExtension(file.FullName);
                        ai.Path = file.FullName;
                        string target = string.Empty;

                        if (file.Extension.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
                        {
                            Interop.Shell.Link link = new Interop.Shell.Link(file.FullName);
                            target = link.Target;
                        }
                        else
                        {
                            target = file.FullName;
                        }

                        // remove items that we can't execute. also remove uninstallers
                        if (!executableExtensions.Contains(Path.GetExtension(target), StringComparer.OrdinalIgnoreCase) || ai.Name == "Uninstall" || ai.Name.StartsWith("Uninstall "))
                        {
                            System.Diagnostics.Debug.WriteLine("Not an app: " + file.Name + ": " + target);
                            continue;
                        }

                        ai.Icon = ai.GetAssociatedIcon();
                        rval.Add(ai);
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine("Error creating ApplicationInfo object in appgrabber. " + ex.Message);
                    }
                }
            }

            return rval;
        }*/
        private List<ApplicationInfo> generateAppList(string directory)
        {
            List<ApplicationInfo> rval = new List<ApplicationInfo>();

            foreach (string file in Directory.EnumerateFiles(directory, "*", SearchOption.AllDirectories))
            {
                ApplicationInfo ai = new ApplicationInfo();
                String ext = Path.GetExtension(file);

                if (executableExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase))
                {
                    try
                    {
                        ai.Name = Path.GetFileNameWithoutExtension(file);
                        ai.Path = file;
                        string target = string.Empty;
                        string fileExt = Path.GetExtension(file);

                        if (fileExt.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
                        {
                            Interop.Shell.Link link = new Interop.Shell.Link(file);
                            target = link.Target;
                        }
                        else
                        {
                            target = file;
                        }

                        // remove items that we can't execute. also remove uninstallers
                        if (!executableExtensions.Contains(Path.GetExtension(target), StringComparer.OrdinalIgnoreCase) || ai.Name == "Uninstall" || ai.Name.StartsWith("Uninstall "))
                        {
                            System.Diagnostics.Debug.WriteLine("Not an app: " + file + ": " + target);
                            continue;
                        }

                        ai.Icon = ai.GetAssociatedIcon();
                        rval.Add(ai);
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine("Error creating ApplicationInfo object in appgrabber. " + ex.Message);
                    }
                }
            }

            return rval;
        }