private void LoadStorageInfo() { System.IO.DriveInfo drvinfo = new System.IO.DriveInfo(driveletter.ToString()); picimage.BackgroundImage = FilesystemIcons.GetLargeIcon(drvinfo.Name.Substring(0, 2) + @"\").ToBitmap(); //Daten eintragen lbdrivename.Text = DriveFunctions.GetVolumeLabel(driveletter) + " (" + driveletter.ToString().ToUpper() + ":)"; lbmodel.Text = DriveFunctions.GetDriveModelName(DriveFunctions.GetPartitionData(driveletter.ToString())[0]); lbdiskindex.Text = "Disk-Index: " + DriveFunctions.GetPartitionData(driveletter.ToString())[0]; lbpartindex.Text = "Partition-Index: " + DriveFunctions.GetPartitionData(driveletter.ToString())[1]; }
private void ShowPathContent() { //ListView leeren lvfs.Items.Clear(); //Wenn der Pfad leer ist, sollen die Drives angezeigt werden. Wenn aber ein Pfad enthalten ist //soll der Inhalt des Pfades (Ordner) angezeigt werden if (_aktpfad == "") { smlist.Images.Clear(); //Nun werden alle Drives geladen und angezeigt foreach (DriveInfo drive in DriveInfo.GetDrives()) { //Icon ermitteln smlist.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drive.Name.Substring(0, 2) + @"\"))); //Jetzt muss geschaut werden, ob der Drive aktiv ist oder nicht und danach entschieden werden if (drive.IsReady) { ListViewItem lvi = new ListViewItem(string.Concat(drive.Name.Substring(0, 2), " ", DriveFunctions.GetVolumeLabel(Convert.ToChar(drive.Name.Substring(0, 1)))), smlist.Images.Count - 1); lvi.SubItems.Add(""); //Dummy //Der Typ wird anhand des DriveType angegeben. Bei Size kommt der maximale Speicherplatz if (drive.DriveType == DriveType.Fixed) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_HDD); } else if (drive.DriveType == DriveType.CDRom) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_OPT); } else if (drive.DriveType == DriveType.Removable) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_EXT); } else if (drive.DriveType == DriveType.Network) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_NET); } else { lvi.SubItems.Add("Unbekannter Laufwerkstyp"); } lvi.SubItems.Add(ExtraFunctions.UnitChange(drive.TotalSize)); lvfs.Items.Add(lvi); } else { ListViewItem lvi = new ListViewItem(string.Concat(drive.Name.Substring(0, 2), @"\"), smlist.Images.Count - 1); lvi.SubItems.Add(""); //Dummy //Der Typ wird anhand des DriveType angegeben. Bei Size kommt der maximale Speicherplatz if (drive.DriveType == DriveType.Fixed) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_HDD); } else if (drive.DriveType == DriveType.CDRom) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_OPT); } else if (drive.DriveType == DriveType.Removable) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_EXT); } else if (drive.DriveType == DriveType.Network) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_NET); } else { lvi.SubItems.Add("Unbekannter Laufwerkstyp"); } lvfs.Items.Add(lvi); } } } else { DirectoryInfo dirinfo = new DirectoryInfo(_aktpfad); smlist.Images.Clear(); smlist.Images.Add(FilesystemIcons.ICON_FILE_16x); //Zuerst kommen die Directories foreach (DirectoryInfo d in dirinfo.GetDirectories()) { try { smlist.Images.Add(FilesystemIcons.GetSmallIcon(d.FullName)); } catch //Wenn das Icon über GetSmallIcon nicht genommen wird { smlist.Images.Add(FilesystemIcons.ICON_DIRECTORY_16x); //Ersatzicon } ListViewItem lvi = new ListViewItem(d.Name, smlist.Images.Count - 1); lvi.SubItems.Add(d.LastWriteTime.ToString()); lvi.SubItems.Add(Extra.StringResource.GetStringResourceFromFile("@shell32.dll,-10152").ToString()); lvfs.Items.Add(lvi); } //Jetzt kommen die Files. Hier kann man denselben Code wie in ExplorerPlusFileView verwenden //Nun wird die Liste gefüllt foreach (FileInfo file in dirinfo.GetFiles()) { //Anhand der Erweiterung schauen, ob es eine Verknüpfung ist oder nicht try { try { if (file.Extension == ".lnk") { smlist.Images.Add(FilesystemIcons.GetSmallIcon(FileFunctions.GetShortcutPath(file.FullName))); } else { smlist.Images.Add(FilesystemIcons.GetSmallIcon(file.FullName)); } } catch { smlist.Images.Add(FilesystemIcons.GetIconByExtension_x16(file.Extension)); } ListViewItem lvi = new ListViewItem(file.Name, smlist.Images.Count - 1); lvi.SubItems.Add(file.LastWriteTime.ToString()); lvi.SubItems.Add(FileFunctions.GetFileTypeDescription(file.Extension)); //Wenn die dateigröße unter 1024 Bytes ist, soll stattdessen 1 KB ausgegeben werden if (file.Length < 1024) { lvi.SubItems.Add("1 KB"); } else { lvi.SubItems.Add(ExtraFunctions.GetFileSizeKB(Convert.ToDouble(file.Length))); } lvfs.Items.Add(lvi); } catch (UnauthorizedAccessException) { //Geht nicht, da kein Zugriff } catch { ListViewItem lvi = new ListViewItem(file.Name, 0); lvi.SubItems.Add(file.LastWriteTime.ToString()); lvi.SubItems.Add(FileFunctions.GetFileTypeDescription(file.Extension)); //Wenn die dateigröße unter 1024 Bytes ist, soll stattdessen 1 KB ausgegeben werden if (file.Length < 1024) { lvi.SubItems.Add("1 KB"); } else { lvi.SubItems.Add(ExtraFunctions.GetFileSizeKB(Convert.ToDouble(file.Length))); } lvfs.Items.Add(lvi); } } } cbrecentpaths.Text = _aktpfad; }
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); } } }
/// <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); } } }
private void ShowPathContent() { //ListView leeren lvfiles.Items.Clear(); //ImageListen vorbereiten. Es werden jeweils 2 erstellt, einmal für die SmallIcons und //einmal für die LargeIcons ImageList sil = new ImageList(); ImageList lil = new ImageList(); sil.ColorDepth = ColorDepth.Depth32Bit; sil.ImageSize = new Size(16, 16); lil.ColorDepth = ColorDepth.Depth32Bit; lil.ImageSize = new Size(48, 48); sil.Images.Add(FilesystemIcons.ICON_FILE_16x); lil.Images.Add(FilesystemIcons.ICON_FILE_32x); lvfiles.SmallImageList = sil; lvfiles.LargeImageList = lil; //Wenn der Pfad leer ist, sollen die Drives angezeigt werden. Wenn aber ein Pfad enthalten ist //soll der Inhalt des Pfades (Ordner) angezeigt werden if (_selectedpath == "") { //View hier //Nun werden alle Drives geladen und angezeigt foreach (DriveInfo drive in DriveInfo.GetDrives()) { //Icon ermitteln sil.Images.Add(FilesystemIcons.GetSmallIcon(string.Concat(drive.Name.Substring(0, 2) + @"\"))); lil.Images.Add(FilesystemIcons.GetLargeIcon(string.Concat(drive.Name.Substring(0, 2) + @"\"))); //Jetzt muss geschaut werden, ob der Drive aktiv ist oder nicht und danach entschieden werden if (drive.IsReady) { ListViewItem lvi = new ListViewItem(string.Concat(drive.Name.Substring(0, 2), " ", DriveFunctions.GetVolumeLabel(Convert.ToChar(drive.Name.Substring(0, 1)))), sil.Images.Count - 1); lvi.SubItems.Add(""); //Dummy //Der Typ wird anhand des DriveType angegeben. Bei Size kommt der maximale Speicherplatz if (drive.DriveType == DriveType.Fixed) { //Wenn es eine SSD ist, soll das auch so angegeben werden if (DriveFunctions.IsSSD(Convert.ToChar(drive.Name.Substring(0, 1)))) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_SSD_DESC); } else { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_HDD_DESC); } } else if (drive.DriveType == DriveType.CDRom) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_OPT); } else if (drive.DriveType == DriveType.Removable) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_EXT); } else if (drive.DriveType == DriveType.Network) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_NET); } else { lvi.SubItems.Add("Unbekannter Laufwerkstyp"); } lvi.SubItems.Add(ExtraFunctions.UnitChange(drive.TotalSize)); lvi.SubItems.Add(getView(drive.Name).ToString()); lvfiles.Items.Add(lvi); } else { ListViewItem lvi = new ListViewItem(string.Concat(drive.Name.Substring(0, 2), @"\"), sil.Images.Count - 1); lvi.SubItems.Add(""); //Dummy //Der Typ wird anhand des DriveType angegeben. Bei Size kommt der maximale Speicherplatz if (drive.DriveType == DriveType.Fixed) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_HDD); } else if (drive.DriveType == DriveType.CDRom) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_OPT); } else if (drive.DriveType == DriveType.Removable) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_EXT); } else if (drive.DriveType == DriveType.Network) { lvi.SubItems.Add(DriveFunctions.DRIVE_VOLUMELABEL_STD_NET); } else { lvi.SubItems.Add("Unbekannter Laufwerkstyp"); } lvi.SubItems.Add(getView(drive.Name).ToString()); lvfiles.Items.Add(lvi); } } } else { //hier implemintiere mich meine code DirectoryInfo dirinfo = new DirectoryInfo(_selectedpath); if (_selectedpath == @"C:\" || _selectedpath == @"D:\") { setView(_selectedpath); } else if (_selectedpath.EndsWith(@"\")) { setView(_selectedpath.Substring(0, _selectedpath.Length - 1)); } else { setView(_selectedpath); } //Zuerst kommen die Directories foreach (DirectoryInfo d in dirinfo.GetDirectories()) { try { sil.Images.Add(FilesystemIcons.GetSmallIcon(d.FullName)); lil.Images.Add(FilesystemIcons.GetLargeIcon(d.FullName)); } catch //Wenn das Icon über GetSmallIcon nicht genommen wird { sil.Images.Add(FilesystemIcons.ICON_DIRECTORY_16x); //Ersatzicon lil.Images.Add(FilesystemIcons.ICON_DIRECTORY_32x); //Ersatzicon } ListViewItem lvi = new ListViewItem(d.Name, sil.Images.Count - 1); lvi.SubItems.Add(d.LastWriteTime.ToString()); lvi.SubItems.Add(Extra.StringResource.GetStringResourceFromFile("@shell32.dll,-10152").ToString()); lvi.SubItems.Add(""); lvi.SubItems.Add(getView(d.FullName).ToString()); lvfiles.Items.Add(lvi); } //Jetzt kommen die Files. Hier kann man denselben Code wie in ExplorerPlusFileView verwenden //Nun wird die Liste gefüllt foreach (FileInfo file in dirinfo.GetFiles()) { //Anhand der Erweiterung schauen, ob es eine Verknüpfung ist oder nicht try { try { if (file.Extension == ".lnk") { sil.Images.Add(FilesystemIcons.GetSmallIcon(FileFunctions.GetShortcutPath(file.FullName))); lil.Images.Add(FilesystemIcons.GetLargeIcon(FileFunctions.GetShortcutPath(file.FullName))); } else { sil.Images.Add(FilesystemIcons.GetSmallIcon(file.FullName)); lil.Images.Add(FilesystemIcons.GetLargeIcon(file.FullName)); } } catch { sil.Images.Add(FilesystemIcons.GetIconByExtension_x16(file.Extension)); lil.Images.Add(FilesystemIcons.GetIconByExtension_x32(file.Extension)); } ListViewItem lvi = new ListViewItem(file.Name, sil.Images.Count - 1); lvi.SubItems.Add(file.LastWriteTime.ToString()); lvi.SubItems.Add(FileFunctions.GetFileTypeDescription(file.Extension)); //Wenn die dateigröße unter 1024 Bytes ist, soll stattdessen 1 KB ausgegeben werden if (file.Length < 1024) { lvi.SubItems.Add("1 KB"); } else { lvi.SubItems.Add(ExtraFunctions.GetFileSizeKB(Convert.ToDouble(file.Length))); } lvi.SubItems.Add(getView(file.FullName).ToString()); lvfiles.Items.Add(lvi); } catch (UnauthorizedAccessException) { //Geht nicht, da kein Zugriff } catch { ListViewItem lvi = new ListViewItem(file.Name, 0); lvi.SubItems.Add(file.LastWriteTime.ToString()); lvi.SubItems.Add(FileFunctions.GetFileTypeDescription(file.Extension)); //Wenn die dateigröße unter 1024 Bytes ist, soll stattdessen 1 KB ausgegeben werden if (file.Length < 1024) { lvi.SubItems.Add("1 KB"); } else { lvi.SubItems.Add(ExtraFunctions.GetFileSizeKB(Convert.ToDouble(file.Length))); } lvi.SubItems.Add(getView(file.FullName).ToString()); lvfiles.Items.Add(lvi); } } } LoadedPath?.Invoke(_selectedpath); }