Mit nachfolgender Klasse lassen sich alle System-Umgebungsvariablen ermitteln und an ein HashTable-Objekt übergeben: Public Class EnvironmentVariables ''' <summary> ''' Umgebungsvariablen ermitteln und an HashTable uebergeben ''' </summary> Public Shared Function EnumEnvironmentVariables() As Hashtable ' HashTable deklarieren / initialisieren Dim ht As Hashtable = New Hashtable() ' Fehlerueberwachung einschalten Try ' Variable zur Auflistung deklarieren und mit Namen und Werten ' der Umgebungsvariablen initialiseren Dim Variables As IDictionary = System.Environment.GetEnvironmentVariables() ' Interface ICollection deklarieren Dim Keys As ICollection = Variables.Keys ' ICollection in eine Schleife durchlaufen und... For Each items As String In Keys ' ... Namen und Werte an HashTable uebergeben ht.Add(items, Variables(items)) Next ' Eventuell auftretenden Fehler abfangen Catch ex As Exception ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try ' HashTable zurueckgeben Return ht End Function End Class Beispiel: Public Class Form1 Public Class EnvironmentVariables ' hier bitte Code von oben einfügen End Class ''' <summary> ''' Die Api Funktion "SendMessage" wird benoetigt, ''' um den Benutzerdefinierten Tab-Stop zu setzen ''' </summary> Public Class WinApi <System.Runtime.InteropServices.DllImport("user32.dll")> _ Public Shared Sub SendMessage( _ ByVal hWnd As IntPtr, _ ByVal uMsg As Int32, _ ByVal wParam As Int32, _ ByRef lParam As Int32) End Sub ''' <summary> ''' Benoetigte Variable fuer SendMessage ''' </summary> Public Const LB_SETTABSTOPS As Int32 = &H192 End Class ''' <summary> ''' Konstante Laenge des Tab-Stops ''' </summary> Const TabLength As Integer = 120 ''' <summary> ''' Tabulator ''' </summary> Private [Tab] As Char = Convert.ToChar(9) ''' <summary> ''' Tab-Stop setzen. Erwartet eine ListBox als Uebergabeparameter ''' </summary> Private Sub ListBox_InitTabStops(ByRef lb As System.Windows.Forms.ListBox) If (Not lb Is Nothing) Then Dim cntTabs() As Integer = {TabLength} Call WinApi.SendMessage(lb.Handle, WinApi.LB_SETTABSTOPS, cntTabs.Length, cntTabs(0)) Else Throw New Exception("Tab-Stop's konnten nicht initialisiert werden.") End If End Sub ''' <summary> ''' Inhalt der HashTable in ListBox ausgeben ''' </summary> ''' <param name="ht">Die mit den Umgebungsvariablen initialisierte HashTable</param> ''' <param name="lb">ListBox zur Ausgabe</param> Private Sub PopulateList(ByVal ht As Hashtable, ByVal lb As ListBox) ' Elemente auflisten Dim Enumerator As IDictionaryEnumerator = ht.GetEnumerator() ' Der Enumerator wird auf das naechste Element der Auflistung gesetzt While Enumerator.MoveNext() With Enumerator ' Key + Value Eintraege an ListBox uebergeben lb.Items.Add(.Key.ToString() & [Tab] & .Value.ToString()) End With End While End Sub Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load With Me ' Form zentrieren .CenterToScreen() ' Tab-Stop setzen .ListBox_InitTabStops(ListBox1) End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' HashTable deklarieren / initialisieren Dim ht As Hashtable = New Hashtable() ' Funktionsuebergabe an HashTable ht = EnvironmentVariables.EnumEnvironmentVariables() ' Enhaelt die HashTable Werte dann... If ht IsNot Nothing Then With Me ' Befinden sich Daten in der ListBox wird diese gelehrt If .ListBox1.Items.Count > 0 Then .ListBox1.Items.Clear() ' Ausgabe des HashTable Inhalts .PopulateList(ht, .ListBox1) End With Else ' ... sonst wird eine Fehlermeldung ausgeben Throw New Exception("HashTable enthaelt keine auswertbaren Daten") End If End Sub ''' <summary> ''' Auf Maus-Click Eintraege ausgeben ''' </summary> Private Sub ListBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown ' Wurde eine Eintrag markiert?... If Me.ListBox1.SelectedIndex > -1 Then ' Fehlerueberwachung einschalten Try ' Zeile - Tabulator getrennt splitten Dim Items() As String = Me.ListBox1.SelectedItem.ToString().Split([Tab]) ' Auswertung des linken und des rechten Maus-Buttons Select Case e.Button ' Bei einem Links-Klick wird das Array-Element ' mit dem Index 0 angezeigt Case Windows.Forms.MouseButtons.Left MessageBox.Show(Items(0), "Info") ' Bei einem Rechts-Klick wird das Array-Element ' mit dem Index 1 angezeigt Case Windows.Forms.MouseButtons.Right MessageBox.Show(Items(1), "Info") End Select ' Eventuell auftretenden Fehler abfangen Catch ex As Exception ' Fehlermeldung ausgeben MessageBox.Show(ex.Message.ToString(), "Info") End Try Else ' ... Wurde kein Eintrag markiert Hinweis anzeigen MessageBox.Show("Es wurde kein Eintrag ausgewaehlt.", "Info") End If End Sub End Class Dieser Tipp wurde bereits 12.094 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
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. |