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.095 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. |
Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access 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 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |