PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VB.NET - Hardware auslesen



MolLy
29.08.2009, 16:17
Guten Abend,

ich habe vor einige meiner Hardwarekomponetnen über Visual Basic auszulesen.
Mit My.Computer.Info.OsFullName zum Beispiel kann man das Betriebssystem auslesen.
Genau sowas suche ich z.B nur für die Grafikkarte , den Prozessor, das Motherboard u.s.w

Ich bin mir nicht sicher wie man das realisieren kann.

Danke schonmal für eure Hilfe!

MoLow

Sawyer
29.08.2009, 16:32
mittels WMI lassen sich diverse verbaute Hardware Komponenten ermitteln.

z.B:
http://dotnet-snippets.de/dns/wmi-hardware-wrapper-SID312.aspx

Diverse andere Beispiele zu diesem Thema findet man auf einschlägigen Seiten , einfach Google bemühen ;)

MfG

MolLy
29.08.2009, 17:32
Vielen Dank für die schnelle Antwort.
Diese seite habe ich auch schon gefunden... Aber irgendwie komm ich nicht ganz zurecht damit.




Imports System
Imports System.Management

Public Class Query_SelectQuery

Public Overloads Shared Function _
Main(ByVal args() As String) As Integer

Dim selectQuery As SelectQuery
selectQuery = New SelectQuery("Win32_LogicalDisk")
Dim searcher As ManagementObjectSearcher
searcher = New ManagementObjectSearcher(selectQuery)

Dim disk As ManagementObject
For Each disk In searcher.Get()
Console.WriteLine(disk.ToString())
Next
Console.ReadLine()
Return 0

End Function
Public Enum Win32 As Integer
_Keyboard
_PointingDevice

End Enum

End Class




Wenn ich das zum Beispiel jetzt angebe sollten die genannten Punkte ausgegeben werden... Wie kann ich das machen?
Ich verstehe es leider nicht ganz :(


Danke


MoLow!

Sawyer
29.08.2009, 18:00
Hier mal eine kürzere variante , hab dazu mal schnell eine funktion geschrieben

Funktion:

Private Function Hardware() As String
Dim Devices As Object = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_VideoController")
Dim HardwareName As String

For Each AdaptList In Devices
HardwareName = AdaptList.Description
Next

Return HardwareName
End Function
Aufruf:

Sub Main()
Console.WriteLine(Hardware())
Console.Read()
End Sub

MolLy
29.08.2009, 21:29
Guteb Abend nochmal,

also ich habs jetzt geschafft...


Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
Private Function Hardware() As String

Dim Devices As Object = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_VideoController")

Dim HardwareName As String

For Each AdaptList In Devices
HardwareName = AdaptList.Description
Next

Return HardwareName

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(Hardware)


End Sub


Funktioniert einwandfrei...

Jetzt nur meien Frage kann man das irgendwie so machen das ich mehrere Komponente da einbinden kann...

Jetzt ist ja nur die Grafikkarte da... Wie kann ich zum Beispiel das Motherboard noch hinzufügen ohne den ganzenn sourcecode nochmal zu schreiben?

IRET
29.08.2009, 21:42
Den Win32_VideoController austauschen ;)
Bei
Dim Devices As Object = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_VideoController")

MolLy
29.08.2009, 21:53
Okay, das wusste ich :)

Und wenn ich jetzt zum Beispiel das Prozessor und den Vidoe COntroller haben will?

Also zwei (oder mehrere ausgaben)

Nicht nur Grafikkarte sondern Grafikkart und Prozessor (win32_prozessor)

Das weiß ich nicht genau :(
(http://msdn.microsoft.com/en-us/library/aa394373%28VS.85%29.aspx)

Sawyer
29.08.2009, 22:27
Einfach die Funktion anpassen , und die gewünschte Hardware Info als Parameter übergeben und sich den wert zurück liefern lassen.

Funktion:

Private Function Hardware(ByVal Hardw As String) As String

Dim Devices As Object = GetObject("winmgmts:").ExecQuery(Hardw)

Dim HardwareName As String

For Each AdaptList In Devices
HardwareName = AdaptList.Description
Next

Return HardwareName

End Function
Aufruf:

MsgBox(Hardware("SELECT * FROM Win32_VideoController"))
MsgBox(Hardware("SELECT * FROM Win32_Processor"))

MfG

MolLy
02.09.2009, 17:47
Oh Perfekt :) Jetzt klappt alles einwandfrei


Vielen Dank für deine Hilfe!