Disk monitor

Status
Niet open voor verdere reacties.

dannydaboy

Gebruiker
Lid geworden
13 sep 2005
Berichten
195
beste mensen

ik ben een hd monitor aan het maken en alles loopt lekker maar ik krijg het alleen voor elkaar met de systemdrive. nu lijkt mij dat ik als ik alle componenten kopieer en de code enigsinds wijzig dat ik dit ook voor me andere drives en disks kan realiseren maar dit lukt niet.

de code tot nu toe
Code:
Imports System
Imports System.IO
Imports System.PlatformID
Imports System.IO.File
Imports System.Math
Imports System.Management
Imports System.Management.Instrumentation
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Label2.Text = My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).Name
        Label4.Text = My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).DriveFormat
        Label12.Text = My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).VolumeLabel

    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Try
            Label6.Text = (Int(My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).TotalSize / 1073741824)) & "GB"
            Dim dvr As New DriveInfo(Environ("SystemDrive"))
            TextBox1.Text = CStr(dvr.TotalFreeSpace / 1073741824)
            TextBox2.Text = CStr(dvr.TotalSize / 1073741824)
            TextBox3.Text = CStr(Val(TextBox2.Text) - Val(TextBox1.Text))
            Label8.Text = (Int(My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).TotalFreeSpace / 1073741824)) & "GB"
            Label10.Text = (Int(TextBox3.Text) & "GB/")
            Label2.Text = My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).Name
            Label4.Text = My.Computer.FileSystem.GetDriveInfo(Environ("SystemDrive")).DriveFormat
            ProgressBar1.Maximum = TextBox2.Text
            ProgressBar1.Value = TextBox3.Text

        Catch ex As Exception
        End Try
    End Sub

    Private Sub Label9_Click(sender As Object, e As EventArgs) Handles Label9.Click

    End Sub

    Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click

    End Sub

    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click

    End Sub
End Class

dit geeft een programma met alle disk info van de C:/ (systemdrive) hoe realiseer ik dit voor me D:/ en E:/ en is het mogelijk om eerst te checken welke drives erin zitten?
 
Hoi,

Ik heb een keer een programma geschreven wat dit ook deed. Daarvan heb ik de code nog wel, dus als je die wil hebben kan je het zeggen.

Maar omdat het misschien ook wel goed is om het zelf te leren zal ik je eerst wat (proberen te) helpen.
Hoe wil je het precies voor meerdere drives gaan doen? Waar wil je alle informatie laten? Wil je een combobox hebben met daarin alle beschikbare drives en als er dan een geselecteerd wordt de informatie dan in labels staat? Of wil je misschien een listview met daarin alle informatie in verschillende kolommen? (De tweede heeft mijn persoonlijke voorkeur omdat het meer overzicht geeft dan de eerste.) Of wil je het op een andere manier weergeven?

Daarna kan je gaan nadenken hoe je kan kijken naar welke drives beschikbaar zijn. Je gebruikt zelf "My.Computer.FileSystem" ook al en daarvan dan ook nog eens "GetDrive", maar wist je ook dat "My.Computer.FileSystem" ook gewoon een collectie van de beschikbare drives heeft ("My.Computer.FileSystem.Drives")? Daar kan je makkelijk doorheen loopen om alle drives te checken. De drives die je hieruit krijgt is hetzelfde lijstje als wanneer je bij "Computer" kijkt in Windows.

Daartussen staan ook drives die niet beschikbaar/verbonden zijn. Daarvan kan je natuurlijk niet de grootte weergeven, dus die zal je eruit moeten halen. Dat kan makkelijk omdat de drives ook nog een "IsReady" property hebben. Als een drive niet ready is, kan je daarvan niet de grootte en nog wat andere dingen weergeven, maar bijvoorbeeld wel de naam en het type. Je moet zelf even kijken of je dat wil of niet.

Ik hoop dat ik je hiermee een eind op weg heb geholpen,
MartinJM
 
Laatst bewerkt:
Hopelijk is de foto zichtbaar hieronder en kun je zien wat ik tot nu toe heb gemaakt. Nu is dit alleen van drive C:/ en wil dit dus van al mijn harde schijven onder elkaar hebben. Het moet dus kunnen zien welke schijven in de pc zitten en de eigenschappen ervan.

Het My.Computer.FileSystem.Drives heb ik me even in verdiep maar lukte me niet zo 1,2,3
image.jpg
 
Ik bedoelde meer hoe je de gebruiker wil laten kiezen van welke schijf hij de eigenschappen wil zien. Het probleem met alle schijven onder elkaar laten zien (met labels) is dat het aantal schijven niet altijd gelijk is. Als je het wel onder elkaar wil laten zien, raad ik zelf een listview aan die je dan op "details" zet en er dan kolommen in maakt. Dat zou er dan ongeveer zo uit kunnen gaan zien:
DriveStats.PNG
(Uiteraard kan je zelf de kolommen, de layout, de inhoud etc van de listview en het form zelf bepalen)

My.Computer.FileSystem.Drives geeft een array (van het type DriveInfo) terug. Dat kan je dus gewoon als een array behandelen. Het makkelijkst lijkt mij om door die array heen te loopen en dan ondertussen alle informatie in variablen/controls neer te zetten.

MartinJM
 
Die listview kan ik inderdaad maar ik vind dat design niet optimaal...en ik kreeg me status balk niet erin kwijt heb ook gedacht om te werken met tabs iedere harddisk in een andere tab maar kreeg dit niet helemaal gedaan ivm het ophalen van de devices en aanmaken van de tabs

Zou het misschien werken als ik tekst labels maak met de devicenaam erop en als men er op klikt de informatie word opgevraagd en getoond word zoals de foto of met een pulldownmenu
 
Het kan wel met een combobox (ik neem aan dat je dat bedoelt met pulldownmenu?), maar ik denk dat het ook best mogelijk is om het met tabs te doen. Labels zijn voor collecties (o.a arrays en lists) meestal niet zo handig omdat het maar 1 element is en het niet meerdere elementen kan bevatten (zoals een tabcontrol tabpages heeft en een listview listviewitems heeft).

Ik zou persoonlijk ook eigenlijk nooit een label gebruiken als de gebruiker erop moet klikken. Ik zou dan gewoon een button gebruiken, eventueel met een andere flatstyle.

Waar je heel erg rekening mee moet houden is dat het ook iets is met een variabel aantal. Zo kan de een alleen een harde schijf hebben, terwijl de ander misschien 5 harde schijven, een paar USB sticks en nog een cd-rom station heeft. Dus met het kiezen van controls moet je iets kiezen wat ervoor gemaakt is om echt een collectie items te bevatten (denk dan dus aan een combobox, tabcontrol, listview etc)

Ik denk dat het een goed idee is als je een methode kiest die jij graag zou gebruiken en dan proberen we vanuit daar verder te werken. Denk daarbij wel aan het bovenstaande ;)

MartinJM
 
Dat is nog best lastig omdat je rekening moet houden dat sommige mensen wel meer als 10 devices kunnen hebben en je het in een overzicht kwijt wilt met een visuele balk erbij. Tabs en labels lijken me dan niet optimaal omdat het aantal van 10+ devices mogelijk is. Verder is het puldown menu niet erg overzichtelijk. Misschien iets kwa design in de richting van Windows zelf (deze computer)

Lijkt nutteloos te zijn maar wil het programma straks uitbreiden met meer functies zoals geheugen gebruik, computernaam e.d
 
Hoi,

Ik ken zelf geen manier om "deze computer" na te maken. Ook denk ik dat het niet heel erg handig is. Wat is namelijk het nut van het programma als het al in Windows zit?

Als je in het programma echt veel onderdelen wil toevoegen (zoals een proces lijst), is het misschien ook handig daar nu vast over na te denken en misschien het programma vanaf het begin al op te splitsen in verschillende forms. Als je dat later nog eens moet gaan doen kan dat best veel werk zijn.

Het enige visuele waarvan ik denk dat het in de buurt komt van wat je in Windows ziet is een listview met de View op "large icon". Maar dan kan je niet zoveel informatie kwijt in het item en zal het item dus moeten zorgen dat labels worden aangepast of dat er een form geopend wordt. In elk geval kan je dan niet in een oogopslag alle gegevens zien.

MartinJM
 
ja ik denk dat ik de basis onderdelen in tabs ga zetten aan de bovenkant "overzicht"-"optimize"enzo en dat ik bij overzicht de inhoud van mijn pc ga onder brengen in een listview het enige probleem wat ik dan nog heb is hoe ik me progresbar ga onderbrengen en in de toekomst mijn cpu status bar.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan