Ergebnis 1 bis 8 von 8
  1. #1
    Ihre Werbung Hier! Avatar von DaZu
    Registriert seit
    09.05.2010
    Beiträge
    302

    Standard [C#] Festplattengröße

    Tag auch,
    ich würde gerne wissen wie ich in C# rausbekomme wie groß eine Festplatte ist.
    Außerdem wieviel Speicher noch frei ist und wenn es geht auch noch eine auflistung der Platten/ Partionen.

    Bei Google habe ich etwas Code gefunden, aber es ging überhaupt nicht.
    Hier habe ich auch nichts gefunden.

  2. #2
    DateMake Dialer
    Registriert seit
    06.09.2007
    Beiträge
    102

    Standard

    schau dir mal die DriveInfo klasse an

    DriveInfo.GetDrives-Methode (System.IO)

  3. #3
    Ihre Werbung Hier! Avatar von DaZu
    Registriert seit
    09.05.2010
    Beiträge
    302

    Standard

    danke werde ich morgen mal machen wenn ich die zeit dafür habe.

  4. #4
    BackNine Wurm
    Registriert seit
    31.03.2010
    Beiträge
    317

    Standard

    Du verwendest einfach System.Management.
    Musst vorher darauf verweisen
    Und hier den Code:
    Code:
    ManagementObject disc = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"" );
    disc.Get();
    MessageBox.Show("Festplatten Größe = " + disc["Size"] + " bytes");
    MessageBox.Show("Freierspeicher = " + disc["FreeSpace"] + "bytes");
    //Edit:
    Für Megabyte einfach durch 1024
    Geändert von Atropos (14.05.2010 um 22:17 Uhr)

  5. #5
    Richard Stallman Avatar von Sawyer
    Registriert seit
    26.07.2008
    Beiträge
    2.037

    Standard

    Naja ich würde hier dennoch wie bereits von l4nk4b3l beschrieben die DriveInfo Klasse verwenden.

    Hier eine schnell geschriebene Funktion:

    Code:
    private static long FestplattenGroesse(string LaufwerkBuchstabe)
    {
        System.IO.DriveInfo di = new System.IO.DriveInfo(LaufwerkBuchstabe);
        {
            return (((di.TotalSize / 1024) / 1024) / 1024);
        }
    }
    Beispiel für den Aufruf:
    Code:
    Console.WriteLine("Die größe der Festplatte \"{0}\" beträgt: {1}", "C:\\", FestplattenGroesse("C:\\"));
    Console.Read();
    Ausgabe:
    Code:
    Die größe der Festplatte "C:\" beträgt: 228 GB
    MfG, Sawyer
    Geändert von Sawyer (14.05.2010 um 22:44 Uhr)

  6. #6
    Ihre Werbung Hier! Avatar von DaZu
    Registriert seit
    09.05.2010
    Beiträge
    302

    Standard

    Hey,
    danke euch das hat mir sehr geholfen, nun versuche ich es aber mit Array etwas aufzuarbeiten, da ich mehrere Sachen abfragen will, aber ich komm nicht weiter.

    Code:
     private string[] myDisc(string Buchstabe)
            {
                string[] myDisc = new string[3];
                System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
                {
                     myDisc[0] = (((di.TotalSize / 1024) / 1024) / 1024).ToString();
                }
                return myDisc;
            }
    
            
            public Cleaner()
            {
                InitializeComponent();
                lblSpeicher.Text = "Die größe der Festplatte beträgt: " + myDisc[0]("C:\\") + " GB";
            }
    Würde mich über hilfe freuen.

  7. #7
    BackNine Wurm
    Registriert seit
    31.03.2010
    Beiträge
    317

    Standard

    Ich versteh dein Problem nicht.
    Wenn du mehrere Sachen im Array Speichern willst (und somit zurückgeben) erhöhe doch einfach den Index und speichere dort den nächsten Datensatz usw.
    //Edit:
    Das myDisc[0]("C:\\") schaut nicht gut aus.
    Wenn das nicht funktioniert mach es am besten so:
    Code:
    string[] disc = myDisc("C:\\");
    lblSpeicher.Text = "Die größe der Festplatte beträgt: " + disc[0]("C:\\") + " GB";
    Geändert von Atropos (15.05.2010 um 15:25 Uhr)

  8. #8
    Ihre Werbung Hier! Avatar von DaZu
    Registriert seit
    09.05.2010
    Beiträge
    302

    Standard

    Danke, zwar hast du wohl nicht verstanden, was genau ich meine, aber du hast genau das Bearbeitet, was ich meinte.

    Hier die Lösung:
    Code:
    private string[] myDisc(string Buchstabe)
            {
                string[] myDisc = new string[5];
                System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
                {
                    myDisc[0] = di.IsReady.ToString();
                    if (di.IsReady == true)
                    {
                        myDisc[1] = di.DriveType.ToString();
                        myDisc[2] = di.DriveFormat.ToString();
                        myDisc[3] = (((di.TotalSize / 1024) / 1024) / 1024).ToString();
                        myDisc[4] = (((di.AvailableFreeSpace / 1024) / 1024) / 1024).ToString();
                    }
                }
                return myDisc;
            }
    
            
            public Cleaner()
            {
                InitializeComponent();
                DriveInfo[] allDrives = DriveInfo.GetDrives();
                foreach (DriveInfo d in allDrives)
                {
                    string[] disc = myDisc(d.Name);
                    if (d.DriveType.ToString() == "Fixed")
                    {
                        lsbAusgabe.Items.Add("Festplatte: " + d.Name);
                        lsbAusgabe.Items.Add("Die größe der Festplatte beträgt: " + disc[3] + " GB");
                        lsbAusgabe.Items.Add("Der freie Speicher beträgt: " + disc[4] + " GB");
                        lsbAusgabe.Items.Add("-------------------------------------------------");
                    }
                }
            }
    Nicht wundern, ich könnte das natürlich einfacher ohne Methode machen, aber wollte es einfach mal testen mit den Arrays.

    Sorry für den Doppelpost, aber habe wieder ein Problem

    Ich habe hier ein ListView und will z.b. in einem Label wiedergeben welches der User Markiert hat.

    Hier mein Code:
    Code:
    private string[] myDisc(string Buchstabe)
            {
                string[] myDisc = new string[5];
                System.IO.DriveInfo di = new System.IO.DriveInfo(Buchstabe);
                {
                    myDisc[0] = di.IsReady.ToString();
                    if (di.IsReady == true)
                    {
                        myDisc[1] = di.DriveType.ToString();
                        myDisc[2] = di.DriveFormat.ToString();
                        myDisc[3] = ((di.TotalSize / 1024) / 1024).ToString();
                        myDisc[4] = ((di.AvailableFreeSpace / 1024) / 1024).ToString();
                    }
                }
                return myDisc;
            }
    
            [DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
            private static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList);
    
    
            public Cleaner()
            {
                InitializeComponent();
    
                ListViewItem myItem;
    
                // Create columns for the items and subitems.
                // Set the view to show details.
                Tabelle.View = View.Details;
                // Allow the user to edit item text.
                Tabelle.LabelEdit = false;
                // Allow the user to rearrange columns.
                Tabelle.AllowColumnReorder = true;
                // Display check boxes.
                Tabelle.CheckBoxes = false;
                // Select the item and subitems when selection is made.
                Tabelle.FullRowSelect = true;
                // Display grid lines.
                Tabelle.GridLines = false;
    
                SetWindowTheme(this.Tabelle.Handle, "explorer", null);
    
                Tabelle.Columns.Add("", 72, HorizontalAlignment.Center);
                Tabelle.Columns.Add("Partition", 60, HorizontalAlignment.Center);
                Tabelle.Columns.Add("Speicher", 80, HorizontalAlignment.Right);
                Tabelle.Columns.Add("Frei", 80, HorizontalAlignment.Right);
                
                DriveInfo[] allDrives = DriveInfo.GetDrives();
    
                foreach (DriveInfo d in allDrives)
                {
                    
                    string[] disc = myDisc(d.Name);
                    if (d.DriveType.ToString() == "Fixed")
                    {
                        myItem = new ListViewItem(d.Name, "1273959727_HP-HDD-Dock-512.png");
                        myItem.SubItems.Add(d.Name);
                        myItem.SubItems.Add(disc[3] + " MB");
                        myItem.SubItems.Add(disc[4] + " MB");
                        Tabelle.Items.Add(myItem);
                    }          
                    
    
                }
            }
    Geändert von DaZu (16.05.2010 um 11:56 Uhr) Grund: Automerged Doublepost

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •