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 Dieser Tipp wurde bereits 14.501 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Dezemeber 2024 Roland Wutzke MultiSort im ListView-Control Dieses Beispiel zeigt, wie sich verschiedene Sortierfunktionen für ein ListView Control realisieren lassen. Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||||
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. |