/// <summary>
        /// Gibt die Größendaten zurück
        /// !In einem zusätzlichen Thread ausführen, um das Programm nicht zu behindern
        /// </summary>
        private void GetFolderSizeThisFolder()
        {
            try
            {
                DirectoryInfo dir = new DirectoryInfo(dirpath); //Es ist eine DirectoryInfo notwendig
                for (int i = 0; i < dir.GetDirectories().Length; i++)
                {
                    try
                    {
                        DirectoryInfo d = dir.GetDirectories()[i];
                        ea.Invoke(d.Name, "Folder", d.LastWriteTime.ToString(), DirectoryFunctions.GetFolderSize(d.FullName));
                    }
                    catch { }
                }

                for (int i = 0; i < dir.GetFiles().Length; i++)
                {
                    try
                    {
                        FileInfo f = dir.GetFiles()[i];
                        ea.Invoke(f.Name, "File", f.LastWriteTime.ToString(), f.Length);
                    }
                    catch { }
                }
            }
            catch (UnauthorizedAccessException ex)
            {
                System.Diagnostics.Debug.Print("Der Zugriff auf den Ordner '" + dirpath + "' ist wegen fehlender Berechtigungen verweigert");
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Print("Ein unbekannter Fehler ist beim Zugriff auf '" + dirpath + "' aufgetreten");
            }
        }
Beispiel #2
0
        private MacroExpander(ExpansionSettings settings, ILogger logger)
        {
            Settings = settings;
            Logger   = logger;

            _rewriteDirectives  = settings.GameDataPaths?.SelectMany(LoadRewriteDirectives)?.ToArray() ?? Array.Empty <RewriteDirective>();
            _directoryFunctions = new DirectoryFunctions(settings.Directory, Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
        }
        private void ShowSharedFolders()
        {
            for (int i = 0; i < tvnfs.Nodes[0].Nodes.Count; i++)
            {
                List <string> networkfolders = LocalNetworkFunctions.GetListOfSharedFolders(LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text));
                foreach (string entry in networkfolders)
                {
                    if (entry.Contains("ERROR") == false)
                    {
                        try
                        {
                            TreeNode n = new TreeNode(entry);
                            n.ImageIndex         = 2;
                            n.SelectedImageIndex = 2;
                            tvnfs.Nodes[0].Nodes[i].Nodes.Add(n);
                        }
                        catch { }
                    }
                    else
                    {
                        System.Diagnostics.Debug.Print("Fehler beim Zugriff auf Netzwerk-Ordner");
                        System.Diagnostics.Debug.Print("IP: " + LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text));
                        System.Diagnostics.Debug.Print("PC-Name: " + tvnfs.Nodes[0].Nodes[i].Text);
                        System.Diagnostics.Debug.Print("Error-Code: " + entry.Substring(entry.IndexOf("=") + 1));
                        //Anhand der Message den Fehler anzeigen
                        if (entry.Substring(entry.IndexOf("=") + 1) == "5")
                        {
                            System.Diagnostics.Debug.Print("Fehler: Access Denied");
                        }
                        else if (entry.Substring(entry.IndexOf("=") + 1) == "53")
                        {
                            System.Diagnostics.Debug.Print("Fehler: Bad Network Path");
                        }
                    }
                }

                //Der nächste Schritt ist zu scannen, welche Freigaben noch Unterordner hat, auf die zugegriffen werden kann.
                //wenn dies der Fall ist, soll ein Temp-Node angelegt werden
                if (tvnfs.Nodes[0].Nodes[i].Nodes.Count > 0)
                {
                    for (int j = 0; j < tvnfs.Nodes[0].Nodes[i].Nodes.Count; j++)
                    {
                        //Der Netzwerkpfad
                        string p = @"\\" + LocalNetworkFunctions.GetIPAdressFromMachineName(tvnfs.Nodes[0].Nodes[i].Text) + @"\" + tvnfs.Nodes[0].Nodes[i].Nodes[j].Text;
                        if (DirectoryFunctions.HasSubDirectories(p))
                        {
                            tvnfs.Nodes[0].Nodes[i].Nodes[j].Nodes.Add(TREENODE_DIRSUB);
                        }
                    }
                }
            }
        }
        public void LoadDrives()
        {
            //Erstmal müssen alle Nodes aus der TreeView entfernt werden, bevor die Drives angezeigt werden können

            tvfilesystem.Nodes.Clear();
            tvfilesystem.ImageList.Images.Clear();

            //Die Standardicons aus der Klasse 'FilesystemIcons' einfügen, damit diese nicht ständig nachgeladen werden müssen
            imglist.Images.Add(FilesystemIcons.ICON_DIRECTORY_16x); //Index 0

            //Nun werden alle Drives geladen und angezeigt
            foreach (DriveInfo drive in DriveInfo.GetDrives())
            {
                //Jetzt muss geschaut werden, ob der Drive aktiv ist oder nicht und danach entschieden werden
                if (drive.IsReady)
                {
                    //Icon ermitteln
                    imglist.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drive.Name.Substring(0, 2) + DS)));

                    //TreeNode erstellen und hinzufügen
                    TreeNode n = new TreeNode(string.Concat(drive.Name.Substring(0, 2), " ", DriveFunctions.GetVolumeLabel(Convert.ToChar(drive.Name.Substring(0, 1)))));
                    n.ImageIndex         = tvfilesystem.ImageList.Images.Count - 1;
                    n.SelectedImageIndex = tvfilesystem.ImageList.Images.Count - 1;
                    tvfilesystem.Nodes.Add(n);

                    //Prüfen, ob das Drive über Ordner verfügt
                    if (DirectoryFunctions.HasSubDirectories(drive.Name.Substring(0, 2) + DS))
                    {
                        //Wenn es über Ordner verfügt, soll der tenporäre TreeNode geadded werden
                        //Das ist dann für das generieren der Subnodes notwendig
                        tvfilesystem.Nodes[tvfilesystem.Nodes.Count - 1].Nodes.Add(TREENODE_DIRSUB);
                    }
                }
                else
                {
                    //TreeNode erstellen und hinzufügen
                    imglist.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drive.Name.Substring(0, 2) + DS)));
                    TreeNode n = new TreeNode(string.Concat(drive.Name.Substring(0, 2), DS));
                    n.ImageIndex         = tvfilesystem.ImageList.Images.Count - 1;
                    n.SelectedImageIndex = tvfilesystem.ImageList.Images.Count - 1;
                    tvfilesystem.Nodes.Add(n);
                }
            }
        }
        private void LoadLastData()
        {
            //Maximale Bytezahl berechnen
            long gesbyte = 0;

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                gesbyte += Convert.ToInt64(dt.Rows[i].ItemArray[3].ToString());
            }

            //Einträge in der DataTable nach Size sortieren
            DataView v = dt.DefaultView;

            v.Sort = "Size DESC";

            //ListView füllen
            ImageList img = new ImageList();

            img.ColorDepth          = ColorDepth.Depth32Bit;
            img.ImageSize           = new Size(16, 16);
            lvinhalt.SmallImageList = img;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                long         size = Convert.ToInt64(v[i].Row.ItemArray[3].ToString());
                ListViewItem lvi  = new ListViewItem(v[i].Row.ItemArray[0].ToString());
                lvi.SubItems.Add(v[i].Row.ItemArray[2].ToString());
                lvi.SubItems.Add(ExtraFunctions.GetFileSizeKB(Convert.ToDouble(size)));

                //Grafik einblenden
                if (v[i].Row.ItemArray[1].ToString() == "Folder")
                {
                    img.Images.Add(FilesystemIcons.GetSmallIcon(DirectoryFunctions.CorrectPath(dirpath)));
                }
                else
                {
                    FileInfo f = new FileInfo(DirectoryFunctions.CorrectPath(dirpath) + v[i].Row.ItemArray[0].ToString());
                    try
                    {
                        if (f.Extension == ".lnk")
                        {
                            img.Images.Add(FilesystemIcons.GetSmallIcon(FileFunctions.GetShortcutPath(f.FullName)));
                        }
                        else
                        {
                            img.Images.Add(FilesystemIcons.GetSmallIcon(f.FullName));
                        }
                    }
                    catch
                    {
                        img.Images.Add(FilesystemIcons.GetIconByExtension_x16(f.Extension));
                    }
                }
                lvi.ImageIndex = img.Images.Count - 1;
                lvi.SubItems.Add(Math.Round(Convert.ToDouble(size * 100 / gesbyte), 2).ToString() + "%");

                lvinhalt.Items.Add(lvi);
            }

            lbsize.Text = ExtraFunctions.UnitChange(Convert.ToDouble(gesbyte));
            tabPage2.Controls.RemoveAt(0);
        }
        /// <summary>
        /// Prüft, ob die Drives noch vorhanden sind. Wenn nicht, sollen diese vernichtet werden
        /// </summary>
        private void Thread_CheckDrives()
        {
            //Liste mit allen Drives laden
            string[] driveold = new string[tvfilesystem.Nodes.Count];
            for (int i = 0; i < tvfilesystem.Nodes.Count; i++)
            {
                driveold[i] = tvfilesystem.Nodes[i].Text;
            }

            //Alle Drives jetzt prüfen
            bool isfound = false;

            foreach (DriveInfo drvinfo in DriveInfo.GetDrives())
            {
                isfound = false;
                //jetzt wird überprüft, ob der Eintrag gefunden wurde
                for (int i = 0; i < driveold.Length; i++)
                {
                    //Wenn das Laufwerk gefunden wurde
                    if (driveold[i] != "")
                    {
                        if (driveold[i].Substring(0, 1) == drvinfo.Name.Substring(0, 1))
                        {
                            driveold[i] = "";
                            isfound     = true;
                            break; //For-Schleife kann verlassen werden
                        }
                    }
                }

                if (isfound == false) //wenn das Laufwerk nicht gefunden wurde, dann soll es hinzugefügt werden
                {
                    //Jetzt muss geschaut werden, ob der Drive aktiv ist oder nicht und danach entschieden werden
                    if (drvinfo.IsReady)
                    {
                        //Icon ermitteln
                        imglist.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drvinfo.Name.Substring(0, 2) + DS)));

                        //TreeNode erstellen und hinzufügen
                        TreeNode n = new TreeNode(string.Concat(drvinfo.Name.Substring(0, 2), " ", DriveFunctions.GetVolumeLabel(Convert.ToChar(drvinfo.Name.Substring(0, 1)))));
                        n.ImageIndex         = tvfilesystem.ImageList.Images.Count - 1;
                        n.SelectedImageIndex = tvfilesystem.ImageList.Images.Count - 1;
                        tvfilesystem.Nodes.Add(n);

                        //Prüfen, ob das Drive über Ordner verfügt
                        if (DirectoryFunctions.HasSubDirectories(drvinfo.Name.Substring(0, 2) + DS))
                        {
                            //Wenn es über Ordner verfügt, soll der tenporäre TreeNode geadded werden
                            //Das ist dann für das generieren der Subnodes notwendig
                            tvfilesystem.Nodes[tvfilesystem.Nodes.Count - 1].Nodes.Add(TREENODE_DIRSUB);
                        }
                    }
                    else
                    {
                        //TreeNode erstellen und hinzufügen
                        imglist.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drvinfo.Name.Substring(0, 2) + DS)));
                        TreeNode n = new TreeNode(string.Concat(drvinfo.Name.Substring(0, 2), DS));
                        n.ImageIndex         = tvfilesystem.ImageList.Images.Count - 1;
                        n.SelectedImageIndex = tvfilesystem.ImageList.Images.Count - 1;
                        tvfilesystem.Nodes.Add(n);
                    }
                }
            }

            //Prüfen, ob noch Einträge in dem Array nicht geleert wurden. Wenn welche gefunden wurden, müssen diese vernichtet werden
            for (int i = driveold.Length; i > 0; i--)
            {
                if (driveold[i - 1] != "") //Wenn das laufwerk in der Liste noch da ist, aber nicht mehr da ist, wird es gelöscht
                {
                    tvfilesystem.Nodes.RemoveAt(i - 1);
                }
            }
        }