Computer Daten auslesen

  • VB.NET

Es gibt 41 Antworten in diesem Thema. Der letzte Beitrag () ist von bla.

    Computer Daten auslesen

    Hallo Community,
    wie kann ich die Leistung des CPU, Grafikkarte und arbeitsspeicher auslesen? ich habe schon in google gesucht aber nichts gutes gefunden!
    ich möchte nicht die aktuelle auslastung auslesen!
    als ergebnis soll vllt herrauskommen:

    Quellcode

    1. Prozessor: AMD Athlon 64 4400+ X2, 2x 2,1 GHZ
    2. GrafikKarte: NVidea Geforce 9800 GT, 512MB
    3. Arbeitsspeicher: 1024 MB-Ram

    oder so ähnlich!

    Danke im vorraus
    Stichwort WMI, mit dieser API sollte man seine Hardwaredaten auslesen können.
    Beispiel:

    VB.NET-Quellcode

    1. Dim DiskDrive As Collections.Generic.Dictionary(Of String, String)
    2. DiskDrive = WMI.Hardware.GetProperties(WMI.Hardware.Win32._DiskDrive)
    3. MsgBox(DiskDrive("Caption"))

    Musst natürlich noch einen Verweis auf die DLL System.Management hinzufügen.
    Hier noch der MSDN Link: msdn.microsoft.com/en-us/library/aa394572(VS.85).aspx

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. GetCPUData()
    3. End Sub
    4. Private Sub GetCPUData()
    5. Dim cpuItem As Object
    6. Dim cpu As Object
    7. ListBox1.Items.Clear()
    8. Try
    9. cpuItem = GetObject("winmgmts:").InstancesOf("Win32_Processor")
    10. If Err.Number = 0 Then
    11. ListBox1.Items.Add("Anzahl der Prozessoren incl. Co-Prozessoren: " & _
    12. cpuItem.Count.ToString.Trim)
    13. For Each cpu In cpuItem
    14. ListBox1.Items.Add("Prozessor: " & cpu.DeviceID)
    15. ListBox1.Items.Add("Bezeichnung: " & Trim$(cpu.Name))
    16. ListBox1.Items.Add("Takt (MHz): " & cpu.MaxClockSpeed)
    17. ListBox1.Items.Add("CPU-ID: " & cpu.ProcessorId)
    18. Next
    19. cpuItem = Nothing
    20. End If
    21. Catch
    22. End Try
    23. End Sub
    24. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    25. Close()
    26. End Sub
    GOOGLE ist mein Meister :)
    danke erstmal aber das liest ja nich die ganzen daten des cpu aus :rolleyes: es soll ja herrauskommen AMD Athlon ... ... das hatte ich auch gerade im blick^^

    EDIT: Danke,klappt ich hab jetzt:

    VB.NET-Quellcode

    1. Private Function GetCPUName()
    2. Dim cpuItem As Object
    3. Dim f As String = "Fehler!"
    4. Try
    5. cpuItem = GetObject("winmgmts:").InstancesOf("Win32_Processor")
    6. For Each CPU In cpuItem
    7. f = CPU.name
    8. Next
    9. Catch ex As Exception : f = "Fehler " & ex.Message : End Try
    10. Return f
    11. End Function

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „progglord“ ()

    Naja, dann musst du halt 2 Checkboxen einfügen die jeweils die Bezeichnung Intel bzw. AMD haben und musst den User das halt selbst eintragen lassen (sollte man ja wissen). Was anderes fällt mir dazu spontan leider auch net mehr ein.
    sry werde dir hier sicher ned alles am stück posten google und die sufu helfen dir 101% weiter
    bisschen eigeniniziative bitte...

    EDIT:
    Also zumindestens den RAM müssteste selber rauskriegen der ist doch nur kinderleicht grad mal eine zeile...
    GOOGLE ist mein Meister :)
    na dann fehlt dir ja nur noch die grafigkarte:

    VB.NET-Quellcode

    1. Sub GetGrakaInfos()
    2. Dim objCPUItem As Object, objCPU As Object
    3. On Error Resume Next
    4. objCPUItem = GetObject("winmgmts:").InstancesOf("Win32_VideoController")
    5. For Each objCPU In objCPUItem
    6. ListBox1.Items.Add("Grafikkarte: " & objCPU.Description)
    7. ListBox1.Items.Add("Auflösung: " & objCPU.VideoModeDescription & " @" & My.Computer.Screen.BitsPerPixel & " Bit")
    8. Application.DoEvents()
    9. Next
    10. End Sub
    GOOGLE ist mein Meister :)
    Huhu :)

    Irgendwie seid Ihr meine letzte Hoffnung.

    Hier habe ich meine Frage gestellt, Antworten kommen da sehr dürftig. MSDN Forum

    Das oben behandelte Thema trifft eigentlich auf mein Projekt zu.

    2. Zu den Feldern, die Daten ermitteln soll: Betriebssystem, Netzwerkkarte, Netzwerkkarten-Treiberversion.
    Betriebssystem habe ich schon einige Informationen finden können. Nur in Sachen Netzwerk konnte ich nur folgendes im Internet finden:
    MAC-Adresse, IP ermitteln, Netzwerk vorhanden, usw..
    Wie kann ich die aktuelle gebrauchte/genutzte Netzwerkkarte (Hersteller) und die installierte Treiberversion ermitteln?


    Ich habe im Formular-Code (also indem das ausgegeben werden soll) folgenden Code:

    VB.NET-Quellcode

    1. Imports System.Management
    2. Public Class Hauptfenster
    3. Dim DiskDrive As Collections.Generic.Dictionary(Of String, String)
    4. DiskDrive = WMI.Hardware.GetProperties(WMI.Hardware.Win32._DiskDrive)
    5. MsgBox(DiskDrive("MaskedTextBox3"))
    6. End Class


    Ein Verweis auf die DLL System.Management muss vorher hinzugefügt werden.

    Was heißt das? Wie mache ich das genau?

    Habe Visual Studio 9 Testversion.

    Was habe ich bisher gemacht:

    Resources -> System.Management.dll

    VB.NET-Quellcode

    1. Public Class WMI
    2. Public Class Hardware
    3. Public Shared Function GetProperties(ByVal [Class] As Win32) As Collections.Generic.Dictionary(Of String, String())
    4. Dim MOS As ManagementObjectSearcher = New ManagementObjectSearcher("Select * from Win32" & [Class].ToString)
    5. Dim MOC As ManagementObjectCollection = MOS.Get
    6. Dim MO As ManagementObject
    7. Dim PD As PropertyData
    8. Dim HWList As New Collections.Generic.Dictionary(Of String, String())
    9. For Each MO In MOC
    10. For Each PD In MO.Properties
    11. If Not PD.Value Is Nothing Then
    12. If HWList.ContainsKey(PD.Name) = False Then
    13. HWList.Add(PD.Name, GetProperty([Class], PD.Name))
    14. End If
    15. End If
    16. Next
    17. Next
    18. Return HWList
    19. End Function
    20. Public Shared Function GetProperty(ByVal [Class] As Win32, ByVal [Property] As String) As String()
    21. Dim MOS As ManagementObjectSearcher = New ManagementObjectSearcher("Select " & [Property] & " from Win32" & [Class].ToString)
    22. Dim MOC As ManagementObjectCollection = MOS.Get
    23. Dim MO As New ManagementObject
    24. Dim Values As New List(Of String)
    25. Try
    26. For Each MO In MOC
    27. Values.Add(MO.GetPropertyValue([Property]))
    28. Next
    29. Catch ex As Exception
    30. Return Nothing
    31. End Try
    32. Return Values.ToArray
    33. End Function
    34. Public Enum Win32 As Integer
    35. 'Cooling Device Classes
    36. _Fan
    37. _HeatPipe
    38. _Refrigeration
    39. _TemperatureProbe
    40. 'Input Device Classes
    41. _Keyboard
    42. _PointingDevice
    43. 'Mass Storage Classes
    44. _AutochkSetting
    45. _CDROMDrive
    46. _DiskDrive
    47. _FloppyDrive
    48. _PhysicalMedia
    49. _TapeDrive
    50. 'Motherboard, Controller, and Port Classes
    51. _1394Controller
    52. _1394ControllerDevice
    53. _AllocatedResource
    54. _AssociatedProcessorMemory
    55. _BaseBoard
    56. _BIOS
    57. _Bus
    58. _CacheMemory
    59. _ControllerHasHub
    60. _DeviceBus
    61. _DeviceMemoryAddress
    62. _DeviceSettings
    63. _DMAChannel
    64. _FloppyController
    65. _IDEController
    66. _IDEControllerDevice
    67. _InfraredDevice
    68. _IRQResource
    69. _MemoryArray
    70. _MemoryArrayLocation
    71. _MemoryDevice
    72. _MemoryDeviceArray
    73. _MemoryDeviceLocation
    74. _MotherboardDevice
    75. _OnBoardDevice
    76. _ParallelPort
    77. _PCMCIAController
    78. _PhysicalMemory
    79. _PhysicalMemoryArray
    80. _PhysicalMemoryLocation
    81. _PNPAllocatedResource
    82. _PNPDevice
    83. _PNPEntity
    84. _PortConnector
    85. _PortResource
    86. _Processor
    87. _SCSIController
    88. _SCSIControllerDevice
    89. _SerialPort
    90. _SerialPortConfiguration
    91. _SerialPortSetting
    92. _SMBIOSMemory
    93. _SoundDevice
    94. _SystemBIOS
    95. _SystemDriverPNPEntity
    96. _SystemEnclosure
    97. _SystemMemoryResource
    98. _SystemSlot
    99. _USBController
    100. _USBControllerDevice
    101. _USBHub
    102. 'Networking Device Classes
    103. _NetworkAdapter
    104. _NetworkAdapterConfiguration
    105. _NetworkAdapterSetting
    106. 'Power Classes
    107. _AssociatedBattery
    108. _Battery
    109. _CurrentProbe
    110. _PortableBattery
    111. _PowerManagementEvent
    112. _UninterruptiblePowerSupply
    113. _VoltageProbe
    114. 'Printing Classes
    115. _DriverForDevice
    116. _Printer
    117. _PrinterConfiguration
    118. _PrinterController
    119. _PrinterDriver
    120. _PrinterDriverDll
    121. _PrinterSetting
    122. _PrintJob
    123. _TCPIPPrinterPort
    124. 'Telephony Classes
    125. _POTSModem
    126. _POTSModemToSerialPort
    127. 'Video and Monitor Classes
    128. _DesktopMonitor
    129. _DisplayConfiguration
    130. _DisplayControllerConfiguration
    131. _VideoConfiguration
    132. _VideoController
    133. _VideoSettings
    134. End Enum
    135. End Class


    Funzt alles irgendwie nicht. Bitte helft mir ......... :)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    boah watt ne geile Klasse!
    Habs mal ein bißchen umgebaut, damit man direkt über den Namen der Enum gehen kann. Dauert zwar ewig lange, aber der liest ja echt alles aus ;)

    Umgefummelte Version:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Management
    2. Public Class WMI
    3. Public Class Hardware
    4. Public Shared Function GetProperties(ByVal ClassName As String) As Collections.Generic.Dictionary(Of String, String())
    5. Dim MOS As ManagementObjectSearcher = New ManagementObjectSearcher("Select * from Win32" & ClassName)
    6. Dim MOC As ManagementObjectCollection = MOS.Get
    7. Dim MO As ManagementObject
    8. Dim PD As PropertyData
    9. Dim HWList As New Collections.Generic.Dictionary(Of String, String())
    10. For Each MO In MOC
    11. For Each PD In MO.Properties
    12. If Not PD.Value Is Nothing Then
    13. If HWList.ContainsKey(PD.Name) = False Then
    14. HWList.Add(PD.Name, GetProperty(ClassName, PD.Name))
    15. End If
    16. End If
    17. Next
    18. Next
    19. Return HWList
    20. End Function
    21. Public Shared Function GetProperties(ByVal [Class] As Win32) As Collections.Generic.Dictionary(Of String, String())
    22. Return GetProperties([Class].ToString)
    23. End Function
    24. Public Shared Function GetProperty(ByVal Classname As String, ByVal [Property] As String) As String()
    25. Dim MOS As ManagementObjectSearcher = New ManagementObjectSearcher("Select " & [Property] & " from Win32" & Classname.ToString)
    26. Dim MOC As ManagementObjectCollection = MOS.Get
    27. Dim MO As New ManagementObject
    28. Dim Values As New List(Of String)
    29. Try
    30. For Each MO In MOC
    31. Values.Add(MO.GetPropertyValue([Property]))
    32. Next
    33. Catch ex As Exception
    34. Return Nothing
    35. End Try
    36. Return Values.ToArray
    37. End Function
    38. Public Shared Function GetProperty(ByVal [Class] As Win32, ByVal [Property] As String) As String()
    39. Return GetProperty([Class].ToString, [Property])
    40. End Function
    41. Public Enum Win32 As Integer
    42. 'Cooling Device Classes
    43. _Fan
    44. _HeatPipe
    45. _Refrigeration
    46. _TemperatureProbe
    47. 'Input Device Classes
    48. _Keyboard
    49. _PointingDevice
    50. 'Mass Storage Classes
    51. _AutochkSetting
    52. _CDROMDrive
    53. _DiskDrive
    54. _FloppyDrive
    55. _PhysicalMedia
    56. _TapeDrive
    57. 'Motherboard, Controller, and Port Classes
    58. _1394Controller
    59. _1394ControllerDevice
    60. _AllocatedResource
    61. _AssociatedProcessorMemory
    62. _BaseBoard
    63. _BIOS
    64. _Bus
    65. _CacheMemory
    66. _ControllerHasHub
    67. _DeviceBus
    68. _DeviceMemoryAddress
    69. _DeviceSettings
    70. _DMAChannel
    71. _FloppyController
    72. _IDEController
    73. _IDEControllerDevice
    74. _InfraredDevice
    75. _IRQResource
    76. _MemoryArray
    77. _MemoryArrayLocation
    78. _MemoryDevice
    79. _MemoryDeviceArray
    80. _MemoryDeviceLocation
    81. _MotherboardDevice
    82. _OnBoardDevice
    83. _ParallelPort
    84. _PCMCIAController
    85. _PhysicalMemory
    86. _PhysicalMemoryArray
    87. _PhysicalMemoryLocation
    88. _PNPAllocatedResource
    89. _PNPDevice
    90. _PNPEntity
    91. _PortConnector
    92. _PortResource
    93. _Processor
    94. _SCSIController
    95. _SCSIControllerDevice
    96. _SerialPort
    97. _SerialPortConfiguration
    98. _SerialPortSetting
    99. _SMBIOSMemory
    100. _SoundDevice
    101. _SystemBIOS
    102. _SystemDriverPNPEntity
    103. _SystemEnclosure
    104. _SystemMemoryResource
    105. _SystemSlot
    106. _USBController
    107. _USBControllerDevice
    108. _USBHub
    109. 'Networking Device Classes
    110. _NetworkAdapter
    111. _NetworkAdapterConfiguration
    112. _NetworkAdapterSetting
    113. 'Power Classes
    114. _AssociatedBattery
    115. _Battery
    116. _CurrentProbe
    117. _PortableBattery
    118. _PowerManagementEvent
    119. _UninterruptiblePowerSupply
    120. _VoltageProbe
    121. 'Printing Classes
    122. _DriverForDevice
    123. _Printer
    124. _PrinterConfiguration
    125. _PrinterController
    126. _PrinterDriver
    127. _PrinterDriverDll
    128. _PrinterSetting
    129. _PrintJob
    130. _TCPIPPrinterPort
    131. 'Telephony Classes
    132. _POTSModem
    133. _POTSModemToSerialPort
    134. 'Video and Monitor Classes
    135. _DesktopMonitor
    136. _DisplayConfiguration
    137. _DisplayControllerConfiguration
    138. _VideoConfiguration
    139. _VideoController
    140. _VideoSettings
    141. End Enum
    142. End Class
    143. End Class


    Und hier mal ein kleines Sample, dass einen Treeview vollmüllt ;)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private isrunning As Boolean = False
    3. Private Delegate Sub dlgAppendNode(ByVal n As TreeNode)
    4. Private Sub AppendNode(ByVal n As TreeNode)
    5. TreeView1.Nodes.Add(n)
    6. End Sub
    7. Private Sub BackgroundProcess()
    8. Try
    9. Dim dclass As New Dictionary(Of String, Dictionary(Of String, String()))
    10. Dim hwenum As WMI.Hardware.Win32
    11. Dim dlg As dlgAppendNode = AddressOf AppendNode
    12. For Each s As String In [Enum].GetNames(hwenum.GetType)
    13. Dim d As Dictionary(Of String, String()) = WMI.Hardware.GetProperties(s)
    14. If d.Count > 0 Then
    15. dclass.Add(s, d)
    16. Dim n As New TreeNode(s)
    17. For Each ss In d.Keys
    18. Dim nn As TreeNode = n.Nodes.Add(ss)
    19. If d(ss) IsNot Nothing AndAlso d(ss).Length > 0 Then
    20. For Each sss As String In d(ss)
    21. If sss IsNot Nothing Then
    22. nn.Nodes.Add(sss)
    23. End If
    24. Next
    25. End If
    26. Next
    27. TreeView1.Invoke(dlg, New Object() {n})
    28. End If
    29. Next
    30. Catch ex As Exception
    31. MessageBox.Show(ex.Message)
    32. End Try
    33. isrunning = False
    34. End Sub
    35. Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    36. If Not isrunning Then
    37. isrunning = True
    38. TreeView1.Nodes.Clear()
    39. Dim t As New Threading.Thread(AddressOf BackgroundProcess)
    40. t.Start()
    41. End If
    42. End Sub
    43. End Class


    Ist jetzt mal nur QnD, aber wie man sieht, funzt das echt gut ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „picoflop“ ()

    Danke für Mühe.
    Bin da echt ein Anfänger.

    Wo kommt der Code hin (Umgefummelte Version - WMI)?

    Imports System.Management.
    Muss ich da irgendwas importieren? Falls ja, wie?


    Habe eine Form, die lautet Hauptfenster.
    Kommt da der Code rein?


    Form1 - also auch umbenennen in Hauptfenster?

    Habe da eine MaskedTextBox namens MaskedTextBox1.
    Wie bekomme ich die z.B. das Betriebssystem da in die o.g. MaskedTextBox? (ohne, dass ein Button geklickt wird - sozusagen beim Programmstart)

    Verstehe momentan nur Bahnhof ... sorry :(
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren
    Danke.

    Hm - nur die Zeit habe ich nicht gerade, da die Testversion bald ausläuft. :(

    Lerne eigentlich meistens aus Beispielen. Sind eigentlich nur drei Felder, mehr ist das nicht.

    Bitte :)
    Grüße JackCimberly

    Deine Anfrage erledigt?
    Als erledigt markieren