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.677 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 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
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. |