' Wird zur Ermittlung der WMI Informationen benoetigt Imports System.Management Public Class GetKeyBoardInformations ''' <summary> ''' Übernimmt eine kurze Objektbeschreibung ''' </summary> Private _caption As String ''' <summary> ''' Übernimmt die Objektbeschreibung ''' </summary> Private _description As String ''' <summary> ''' Übernimmt Adressinformation ''' </summary> Private _deviceid As String ''' <summary> ''' Übernimmt einen boolschen Wert der angibt ob das ''' Keyboard "locked" ist oder nicht ''' </summary> Private _islocked As Boolean ''' <summary> ''' Übernimmt eine Zeichenkette die das Keyboard-Layout identifiziert ''' </summary> Private _layout As String ''' <summary> ''' Übernimmt eine Zeichenkette die das Keyboard beschreibt ''' </summary> Private _name As String ''' <summary> ''' Übernimmt die Anzahl der Funktionstasten ''' </summary> Private _numberoffunctionkeys As String ''' <summary> ''' Initalisierung ''' </summary> Public Sub New() ' Klassen-Funktion zur Initialisierung aufrufen KeyBoardInformations() End Sub ''' <summary> ''' Tabulator. Wird hier zur Zeichenkettenformatierung benötigt ''' </summary> Private ReadOnly Property Tab() As Char Get Return Convert.ToChar(9) End Get End Property ''' <summary> ''' Rueckgabe der Ergebnisse aus den einzelnen Prozeduren ''' </summary> Public Overrides Function ToString() As String ' StringBuilder zur Informationsaufnahme deklarieren / initialisieren Dim sb As New System.Text.StringBuilder ' Fehlerüberwachung einschalten Try ' Die Informationen werden im StringBuilder zusammengefasst sb.Append("\n\tCaption:\a\b" & Me.ReturnKeyBoardCaption) sb.Append("\n\tDescription:\a" & Me.ReturnKeyBoardDescription) sb.Append("\n\tDeviceID:\a\b" & Me.ReturnKeyBoardDeviceID) sb.Append("\n\tIsLocked:\a\b" & Me.ReturnKeyBoardIsLocked) sb.Append("\n\tLayout:\a\b" & Me.ReturnKeyBoardLayout) sb.Append("\n\tName:\a\b" & Me.ReturnKeyBoardName) sb.Append("\n\tFunctionKeys:\a" & Me.ReturnKeyBoardNumberOfFunctionKeys) ' "\n" wird ausgewechselt durch Zeilenumbruch sb.Replace("\n", vbCrLf) ' "t" wird ausgewechselt durch einen Tabulator - Ermöglicht ' einen größeren rechten Rand sb.Replace("\t", Tab) ' "\a" und / oder "\b" wird durch einen / zwei Tabulator/en ' ausgewechselt um Bezeichnung und Beschreibung zu trennen sb.Replace("\a", Tab) sb.Replace("\b", Tab) ' Rückgabe es StringBuilders als String Return sb.ToString() Catch ex As Exception ' Eventuell auftretenden Fehler abfangen und ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try ' Leeren String zurückgeben Return "" End Function ''' <summary> ''' Initialisert die einzelnen Variablen mit den benoetigten Werten ''' </summary> Private Sub KeyBoardInformations() ' Fehlerueberwachung einschalten Try ' Abfragestring Dim query As String = "Select * from Win32_Keyboard" ' ManagementObjectSearcher intitialisieren Dim mos As ManagementObjectSearcher = New ManagementObjectSearcher(query) Dim moc As ManagementObjectCollection = mos.Get() ' ManagementObject deklarieren Dim mo As ManagementObject Const err As String = "Fehler" ' Schleifendurchlauf um die benötigten Informationen an die einzelnen ' Variablen zu übergeben. Sollte es nicht möglich sein eine bestimmte ' Information zu ermitteln wird an die entsprechende Variable eine ' Hinweis übergeben. For Each mo In moc ' Caption: Objektbeschreibung If (Not mo("Caption") Is Nothing) Then _caption = mo("Caption").ToString() Else _caption = err End If ' Description Objektbeschreibung If (Not mo("Description") Is Nothing) Then _description = mo("Description").ToString() Else _description = err End If ' DeviceID Adressinformation If (Not mo("DeviceID") Is Nothing) Then _deviceid = mo("DeviceID").ToString() Else _deviceid = err End If ' IsLocked Ist das Ergebnis True ist das Geraet blockiert If (Not mo("IsLocked") Is Nothing) Then _islocked = Convert.ToBoolean(mo("IsLocked")) Else _islocked = Nothing End If ' Layout Identifiziert das Keyboard-Layout If (Not mo("Layout") Is Nothing) Then _layout = mo("Layout").ToString() Else _layout = err End If ' Name Zeichenkette die das Keyboard beschreibt If (Not mo("Name") Is Nothing) Then _name = mo("Name").ToString() Else _name = err End If ' NumberOfFunctionKeys Ermittelt die Anzahl der Funktionstasten If (Not mo("NumberOfFunctionKeys") Is Nothing) Then _numberoffunctionkeys = mo("NumberOfFunctionKeys").ToString() Else _numberoffunctionkeys = err End If Next Catch ex As ManagementException ' Sollte ein Fehler auftreten wird dieser abgefangen ' und Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info [ManagementException]") Catch ex As Exception ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info [Exception]") End Try End Sub ''' <summary> ''' Gibt die Objektbeschreibung zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardCaption() As String Get Return _caption End Get End Property ''' <summary> ''' Gibt die Objektbeschreibung zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardDescription() As String Get Return _description End Get End Property ''' <summary> ''' Gibt die Keyboard ID zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardDeviceID() As String Get Return _deviceid End Get End Property ''' <summary> ''' Gibt den Status ob das Keyboard "Locked" ist oder nicht zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardIsLocked() As Boolean Get Return _islocked End Get End Property ''' <summary> ''' Gibt das Keyboard-Layout zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardLayout() As String Get ' Fehlerüberwachung einschalten Try ' Ist die Länge der Variable _layout mehr/gleich 3 dann... If _layout.Length >= 3 Then ' ... nimmt die Variable Result die ersten 3 Zeichen aus _layout auf Dim Result As String = _layout.Substring(_layout.Length - 3) ' Ist das Ergebnis aus Result = 407 wird... If Result = "407" Then ' ... die auszugebende Zeichenkette zusammengesetzt. Return "German Keyboard: " + Result Else ' ... sonst wird die gesamt ermittelte Zeichenkette zurückgegeben Return Result End If Else ' ... enspricht _layout nicht den Vorgaben wird "" zurückgegeben Return "" End If Catch ex As Exception ' Eventuell auftretenden Fehler abfangen ' und Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info - [ReturnKeyBoardLayout]") End Try ' Leere Rückgabe Return "" End Get End Property ''' <summary> ''' Gibt die Beschreibung des Keyboard's zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardName() As String Get Return _name End Get End Property ''' <summary> ''' Gibt die Anzahl der Funktionstasten zurück ''' </summary> Public ReadOnly Property ReturnKeyBoardNumberOfFunctionKeys() As String Get Return _numberoffunctionkeys End Get End Property End Class Aufrufbeispiel: Erstellen Sie ein neues Projekt und fügen den Verweis "System.Management" hinzuf. Fügen Sie obigen Code in den Codeteil der Form ein. Platzieren Sie noch einen Button auf die Form und hinterlegen im Click-Event folgenden Code. Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Fehlerüberwachung einschalten Try ' Klasse initialisieren Dim gkbi As New GetKeyBoardInformations() ' Werte ausgeben MessageBox.Show(gkbi.ToString(), "Info") Catch ex As Exception ' Eventuell auftretenden Fehler abfangen ' und Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try End Sub Dieser Tipp wurde bereits 12.378 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... Tipp des Monats ![]() Heinz Prelle Tacho-Simulation Dieser Tipp zeigt, wie man einen grafischen Tacho mit bewegbarer Tachonadel simulieren kann. Neu! sevEingabe 3.0 ![]() Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |