Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Copyright ©1996-2011 VBnet/Randy Birch, All Rights Reserved.
' Some pages may also contain other copyrights by the author.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Distribution: You can freely use this code in your own
' applications, but you may not reproduce
' or publish this code on any web site,
' online service, or distribute as source
' on any media without express permission.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'listview column auto-resizing
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_SETCOLUMNWIDTH As Long = (LVM_FIRST + 30)
Private Const LVSCW_AUTOSIZE As Long = -1
Private Const LVSCW_AUTOSIZE_USEHEADER As Long = -2
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Sub Form_Load()
With ListView1
.ListItems.Clear
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Processor"
.ColumnHeaders.Add , , "BPS"
.ColumnHeaders.Add , , "Hres"
.ColumnHeaders.Add , , "Vres"
.ColumnHeaders.Add , , "Freq"
.ColumnHeaders.Add , , "Colours"
.ColumnHeaders.Add , , "rf min"
.ColumnHeaders.Add , , "rf max"
.ColumnHeaders.Add , , "Vmode"
.ColumnHeaders.Add , , "Mem"
.View = lvwReport
.Sorted = False
End With
Command1.Caption = "Video Controller Info"
End Sub
Private Sub Command1_Click()
ListView1.ListItems.Clear
Call wmiVideoControllerInfo
Call lvAutosizeControl(ListView1)
End Sub
Private Sub lvAutosizeControl(lv As ListView)
Dim col2adjust As Long
'Size each column based on the maximum of
'wither the ColumnHeader text width, or,
'if the items below it are wider, the
'widest list item in the column
lv.Visible = False
For col2adjust = 0 To lv.ColumnHeaders.Count - 1
Call SendMessage(lv.hwnd, _
LVM_SETCOLUMNWIDTH, _
col2adjust, _
ByVal LVSCW_AUTOSIZE_USEHEADER)
Next
lv.Visible = True
End Sub
Private Sub wmiVideoControllerInfo()
Dim wmiObjSet As SWbemObjectSet
Dim obj As SWbemObject
Dim itmx As ListItem
Dim msg As String
Set wmiObjSet = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
InstancesOf("Win32_VideoController")
On Local Error Resume Next
For Each obj In wmiObjSet
Set itmx = ListView1.ListItems.Add(, , obj.VideoProcessor)
itmx.SubItems(1) = obj.CurrentBitsPerPixel
itmx.SubItems(2) = obj.CurrentHorizontalResolution
itmx.SubItems(3) = obj.CurrentVerticalResolution
itmx.SubItems(4) = obj.CurrentRefreshRate
itmx.SubItems(5) = obj.CurrentNumberOfColors
itmx.SubItems(6) = obj.MinRefreshRate
itmx.SubItems(7) = obj.MaxRefreshRate
Select Case obj.CurrentScanMode
Case 1: msg = "other"
Case 2: msg = "unknwn"
Case 3: msg = "intrlcd"
Case 4: msg = "nintrlcd"
End Select
itmx.SubItems(8) = msg
Select Case obj.VideoMemoryType
Case 1: msg = "other"
Case 2: msg = "unknown"
Case 3: msg = "VRAM"
Case 4: msg = "DRAM"
Case 5: msg = "SRAM"
Case 6: msg = "WRAM"
Case 7: msg = "EDO RAM"
Case 8: msg = "Burst Synchronous DRAM"
Case 9: msg = "Pipelined Burst SRAM"
Case 10: msg = "CDRAM"
Case 11: msg = "3DRAM"
Case 12: msg = "SDRAM"
Case 13: msg = "SGRAM"
End Select
itmx.SubItems(9) = msg
Next
End Sub |