vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: System/Windows   |   VB-Versionen: VB2005, VB200811.04.08
Umgebungsvariablen ermitteln

Mit dieser Klasse werden die System-Umgebungsvariablen ermittelt und an eine HashTable übergeben. Das Beispiel zeigt zudem die Anzeige der Variablen in einer mehrspaltigen ListBox.

Autor:   Heinz PrelleBewertung:     [ Jetzt bewerten ]Views:  10.022 
www.visual-basic5.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

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:
Im nachfolgenden Beispiel sollen alle Umgebungsvariablen in einer mehrspaltigen ListBox angezeigt werden. Hierzu benötigen wir neben obiger Klasse noch nachfolgenden Code. Platzieren Sie aber bitte zunächst ein ListBox-Control, sowie einen Button auf die Form.

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 10.022 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel