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); } } }
/// <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); } } }