vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows   |   VB-Versionen: VB2005, VB200808.09.08
control.exe - Control Panels der Systemsteuerung anzeigen

Es werden verschiedene Control-Panels aus der Systemsteuerung gestartet und mit den dazugehörigen Icons angezeigt.

Autor:   Heinz PrelleBewertung:  Views:  14.241 
www.visual-basic5.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit diesem Code lassen sich verschiedene Anwendungen (Control-Panels) aus der Systemsteuerung starten. Ferner lassen sich die Anwendungen auch mit den in der Systemsteuerung angezeigten Icons in einem PictureBox-Control anzeigen.

Erstellen Sie ein neues Projekt, platzieren auf die Form ein ComboBox-Control, einen Button, sowie ein PictureBox-Control und fügen nachfolgenden Code in den Codeteil der Form ein:

Public Class Form1
 
  ' Struktur der vorhandenen Panel Namen...
  Public Structure PanelNames
    ' Netzwerkverbindungen
    Public NetworkConnection As String
    ' Eingabehilfen
    Public AccessibilityControls As String
    ' Programme installieren oder entfernen
    Public AddOrRemovePrograms As String
    ' Display Eigenschaften
    Public DisplayProperties As String
    ' Hardware-Assistenten aufrufen
    Public AddHardware As String
    ' Eigenschaften von Internet
    Public ConfigureInternetExplorerAndInternetProperties As String
    ' Regions- und Sprachoptionen
    Public RegionalSettings As String
    ' Gamecontroller
    Public GameControllers As String
    ' Eigenschaften von Maus
    Public MousePropertiesAndSettings As String
    ' Eigenschaften von Sounds und Audiogeraeten
    Public SoundsAndAudio As String
    ' Benutzerkonten
    Public UserAccounts As String
    ' Eigenschaften von Energieoptionen
    Public PowerConfiguration As String
    ' Systemeigenschaften
    Public SystemProperties As String
    ' Telefon- und Modemoptionen
    Public PhoneAndModemOptions As String
    ' Eigenschaften von Datum und Uhrzeit
    Public DateAndTimeProperties As String
    '...
  End Structure
 
  ' Struktur dimensionieren...
  Private pn As PanelNames
  Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
 
    ' Einzelnen ComboBox-Eintrag in zwei Element zerlegen
    ' Hier wird standardmäßig das in der Zeichenkette 
    ' vorkommende Leerzeichen verwendet.
    Dim s() As String = Me.ComboBox1.SelectedItem.ToString().Split()
 
    ' Erstes Element als Titelzeilenbeschriftung verwenden
    Me.Text = s(0)
    ' Aufruf der Prozedur ControlPanelApplets mit dem ermittelten 
    ' Wert aus dem selektieren Eintrag der ComboBox + der benötigten 
    ' PictureBox zur Anzeige des extrahierten Icons der .cpl Datei.
    ControlPanelApplets(s(0).Trim(), Me.PictureBox1)
  End Sub
  ''' <summary>
  ''' Ruft das übergebene Panel auf
  ''' </summary>
  ''' <param name="Panel">Name des Control-Panels</param>
  ''' <param name="Canvas">Ausgabegerät fuer das extrahierte Icon</param>
  Private Sub ControlPanelApplets(ByVal Panel As String, _
    ByVal Canvas As PictureBox)
 
    ' Startprozess initialisieren...
    Dim psi As ProcessStartInfo = New ProcessStartInfo()
    With psi
      ' Aufrufende ausfuehrende Datei an FileName uebergeben
      .FileName = "control.exe"
      ' Fehlerdialog verwenden
      .ErrorDialog = True
      ' Argument ist die aufzurufende .cpl Datei
      .Arguments = Panel
      ' Prozess initialisieren...
      Dim hProcess As Process = New Process()
      With hProcess
        ' ... und Prozess starten.
        .StartInfo = psi
        .Start()
      End With
    End With
    ' Es wird versucht das Icon des Control-Panels zu extrahieren 
    ' und in einer PictureBox anzuzeigen.
    ' Fehlerüberwachung einschalten
    Try
      ' Enthält das Ausgabegerät eine Grafik wird das 
      ' Ausgabegerät zurückgesetzt
      If Canvas.Image IsNot Nothing Then Canvas.Image = Nothing
      ' Icon aus der übergebenen .cpl Datei extrahieren
      ' Die .cpl Dateien befinden sich im System-Pfad. 
      ' Es wird über die Funktion Path.Combine der Systempfad mit 
      ' der übergebenen .cpl Datei kombiniert und über die Funktion 
      ' ExtractAssociatedIcon das Icon extrahiert um dieses an das 
      ' Ausgabegerät zu übergeben.
      Dim hIcon As Icon = Icon.ExtractAssociatedIcon( _
        IO.Path.Combine( _
          System.Environment.GetFolderPath(Environment.SpecialFolder.System _
        ), Panel))
      '...Konnte das Icon extrahiert werden wird dieses an 
      ' das Ausgabegerät übergeben.
      If hIcon IsNot Nothing Then Canvas.Image = hIcon.ToBitmap()
    Catch ex As Exception
      ' Eventuell auftretenden Fehler abfangen und 
      ' Fehlermeldung in einer MessageBox ausgeben.
      MessageBox.Show(ex.Message(), "Info - ExtractIcon")
    End Try
  End Sub
  Public Sub New()
    InitializeComponent()
    ' Struktur initialisieren...
    pn = New PanelNames
    ' Benötigte Werte an die Strukturvariablen übergeben. 
    ' Beschreibung s.o.
    With pn
      .NetworkConnection = "ncpa.cpl"
      .AccessibilityControls = "access.cpl"
      .AddOrRemovePrograms = "appwiz.cpl"
      .DisplayProperties = "desk.cpl"
      .AddHardware = "hdwwiz.cpl"
      .ConfigureInternetExplorerAndInternetProperties = "inetcpl.cpl"
      .RegionalSettings = "intl.cpl"
      .GameControllers = "joy.cpl"
      .MousePropertiesAndSettings = "main.cpl"
      .SoundsAndAudio = "mmsys.cpl"
      .UserAccounts = "nusrmgr.cpl"
      .PowerConfiguration = "powercfg.cpl"
      .SystemProperties = "sysdm.cpl"
      .PhoneAndModemOptions = "telephon.cpl"
      .DateAndTimeProperties = "timedate.cpl"
    End With
  End Sub
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
 
    With Me
      ' Fenster zentrieren
      .CenterToScreen()
      ' Titelbeschreibung setzen
      .Text = "control.exe - Control Panels anzeigen"
      ' Buttonbeschreibung setzen
      .Button1.Text = "Test..."
      ' Die verwendete PictureBox erhält die Eigenschaft AutoSize
      .PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
    End With
    ' Fehlerueberwachung einschalten...
    Try
      ' Verwendung FieldInfo zum Durchlaufen der verwendeten 
      ' Struktur zur Anzeig in einer ComboBox. 
      ' Dimensionierung FieldInfo.
      Dim fi As System.Reflection.FieldInfo() = pn.GetType.GetFields
      ' Schleifendurchlauf in der Struktur...
      For Each Items As System.Reflection.FieldInfo In fi
        ' Das Array s() übernimmt die einzelnen Elemente jedes 
        ' einzelnen Eintrags in der Sruktur um 
        ' 1.) den initialisierten Wert und 
        ' 2.) den Variablen-Namen aufzunehmen.
        Dim s() As String = Split(Items.ToString(), " ")
        ' Beide Werte werden dann durch ein Leerzeichen getrennt 
        ' in der verwendeten ComboBox angezeigt.
        Me.ComboBox1.Items.Add(Items.GetValue(pn).ToString() & " " & s(1))
      Next
    Catch
      ' Eventuell aufretenden Fehler abfangen...
      '... und ausgeben.
      Throw New Exception("Error...")
    End Try
    ' Enthält die ComboBox Einträge wird das erste Item angezeigt.
    If Me.ComboBox1.Items.Count > 0 Then Me.ComboBox1.SelectedIndex = 0
  End Sub
End Class



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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.