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.444 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 Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. 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. |