Mit dem nachfolgendem Code ist es möglich, die Grafikkarten (inkl. Auflösungen) und die Soundkarten aufzulisten, die auf dem Computer installiert sind. Hierzu müssen Sie DirectX7 einbinden: Projekt/Verweise - DirectX for Visual Basic Type Library Den nachfolgenden Code in ein Modul kopieren: Option Explicit Public DX7 As DirectX7 Public DDraw As DirectDraw7 Private Type AuflösungType Count As Long ' Anzahl der GrafikModis Width As Long ' maximal mögliche Breite Hight As Long ' maximal mögliche Höhe ColorDepth As Long ' maximale Farbtiefe End Type Private Type DDDeviceType DeviceCount As Integer DeviceDesc As String ' Hardware Beschreibung DeviceGuid As String ' Hardware GUID DeviceName As String ' Hardware Name ' Speichert die Auflösungen GrafikAuflösung() As AuflösungType End Type Public Enum DeviceError Grafikkarte = 1 Soundkarte = 2 Alle = 3 End Enum Public GrafikDevice() As DDDeviceType Public SoundDevice() As DDDeviceType Public isError As DeviceError ' vorhandene Hardware in ein Array speichern Public Function Get_DeviceEnum() As DeviceError Dim DDEnum As DirectDrawEnum Dim DSEnum As DirectSoundEnum Dim i As Integer On Error GoTo ErrHandler Set DX7 = New DirectX7 Set DDEnum = DX7.GetDDEnum If DDEnum.GetCount > 0 Then ' Array-Größe festlegen ReDim GrafikDevice(DDEnum.GetCount) As DDDeviceType GrafikDevice(1).DeviceCount = DDEnum.GetCount For i = 1 To GrafikDevice(1).DeviceCount ' Grafikkarten Infos werden gespeichert With GrafikDevice(i - 1) .DeviceGuid = DDEnum.GetGuid(i) .DeviceDesc = DDEnum.GetDescription(i) .DeviceName = DDEnum.GetName(i) ' Auflösungen in 2tem Array auflisten Get_DDDisplayEnum i - 1 End With Next i End If Set DSEnum = DX7.GetDSEnum If DSEnum.GetCount > 0 Then ReDim SoundDevice(DSEnum.GetCount) As DDDeviceType SoundDevice(1).DeviceCount = DSEnum.GetCount For i = 1 To SoundDevice(1).DeviceCount ' Soundkarten Infos werden gespeichert With SoundDevice(i - 1) .DeviceGuid = DSEnum.GetGuid(i) .DeviceDesc = DSEnum.GetDescription(i) .DeviceName = DSEnum.GetName(i) End With Next i End If ErrHandler: ' Prüfen ob die Hardware vorhanden ist If DDEnum.GetCount <= 0 And DSEnum.GetCount <= 0 Then Get_DeviceEnum = Alle isError = Alle ElseIf DDEnum.GetCount <= 0 Then Get_DeviceEnum = Grafikkarte isError = Grafikkarte ElseIf DSEnum.GetCount <= 0 Then Get_DeviceEnum = Soundkarte isError = Soundkarte End If Set DX7 = Nothing End Function Private Sub Get_DDDisplayEnum(ByVal ArrayNr As Integer) Dim DDDisplayEnum As DirectDrawEnumModes Dim i As Integer Dim TmpSurfDesc As DDSURFACEDESC2 On Error GoTo ErrHandler ' DirectDraw instanzieren, da die variable ' DDDsiplayEnum von DirectDraw instanziert ' werden muss Set DDraw = DX7.DirectDrawCreate( _ GrafikDevice(ArrayNr).DeviceGuid) Set DDDisplayEnum = DDraw.GetDisplayModesEnum( _ DDEDM_DEFAULT, TmpSurfDesc) If DDDisplayEnum.GetCount > 0 Then With GrafikDevice(ArrayNr) ReDim .GrafikAuflösung(DDDisplayEnum.GetCount) As AuflösungType .GrafikAuflösung(ArrayNr).Count = DDDisplayEnum.GetCount For i = 1 To .GrafikAuflösung(ArrayNr).Count DDDisplayEnum.GetItem i, TmpSurfDesc .GrafikAuflösung(i - 1).ColorDepth = _ TmpSurfDesc.ddpfPixelFormat.lRGBBitCount .GrafikAuflösung(i - 1).Hight = _ TmpSurfDesc.lHeight .GrafikAuflösung(i - 1).Width = _ TmpSurfDesc.lWidth Next i End With End If ErrHandler: Set DDraw = Nothing End Sub Fügen Sie der Form jetzt drei ComboBoxen hinzu (Combo1 - Combo3). Die einzelnen ComboBoxen werden dann im Form_Load Ereignis der Form1 mit den ermittelten Daten gefüllt. Private Sub Form_Load() Dim DeviceError As DeviceError DeviceError = Show_Devices(Combo1, Combo2, Combo3) If DeviceError = Grafikkarte Then MsgBox "Keine Grafikkarte vorhanden." ElseIf DeviceError = Soundkarte Then MsgBox "Keine Soundkarte installiert." End If End Sub Private Function Show_Devices(cmbGrafik As ComboBox, _ cmbAuflösung As ComboBox, _ cmbSound As ComboBox) As DeviceError Dim i As Integer Dim i2 As Integer Show_Devices = Get_DeviceEnum If isError = Alle Then Exit Function If isError <> Grafikkarte Then For i = 0 To GrafikDevice(1).DeviceCount - 1 With GrafikDevice(i) cmbGrafik.AddItem .DeviceDesc For i2 = 0 To .GrafikAuflösung(i).Count - 1 With .GrafikAuflösung(i2) cmbAuflösung.AddItem .Width & " x " & _ .Hight & " x " & .ColorDepth End With Next i2 End With Next i End If If isError <> Soundkarte Then For i = 0 To SoundDevice(1).DeviceCount - 1 cmbSound.AddItem SoundDevice(i).DeviceDesc Next i End If End Function Dieser Tipp wurde bereits 11.684 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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. 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 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. |