Получить информацию о видеокарте - VB

Узнай цену своей работы

Формулировка задачи:

Вечер добрый, понадобилось узнать информацию о видеокарте с программы. Подскажите как плиз. Заранее благодарен !

Решение задачи: «Получить информацию о видеокарте»

textual
Листинг программы
'Используется WMI
'Option Explicit
Dim fso, wmio, nwo, strInform As String
Private Sub Command1_Click()
    strInform = ""
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set nwo = CreateObject("WScript.Network")
    If Len(LCase(nwo.ComputerName)) > 0 Then InformationAboutVideo (LCase(nwo.ComputerName))
    MsgBox strInform, vbInformation, "Видеоадаптер" 'Print strInform' переменная содержит информацию о видеоадаптере
End Sub
Sub InformationAboutVideo(CompName)
    Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & CompName & "\Root\CIMV2")
        Log "Win32_VideoController", _
        "Name,AdapterRAM,VideoProcessor,VideoModeDescription,DriverDate,DriverVersion", "NOT (Name LIKE '%Secondary')", _
        " ", _
        "Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера"
End Sub
 
'составить WQL-запрос, выполнить и записать в переменную
'входные параметры:
'from - класс WMI
'sel - свойства WMI, через запятую
'where - условие отбора или пустая строка
'sect - соответствующая секция отчета
'param - соответствующие параметры внутри секции отчета, через запятую
'для отображения в кратных единицах, нужно их указать в скобках
Sub Log(from, sel, where, sect, param)
    Dim i As Integer, query, clss, item, prop
    Const RETURN_IMMEDIATELY = 16, FORWARD_ONLY = 32
    query = "Select " & sel & " From " & from
    If Len(where) > 0 Then query = query & " Where " & where
    Set clss = wmio.ExecQuery(query, , RETURN_IMMEDIATELY + FORWARD_ONLY)
    Dim props, names, value
    props = Split(sel, ",")
    names = Split(param, ",")
    For Each item In clss
        For i = 0 To UBound(props)
            Set prop = item.Properties_(props(i))
            value = prop.value
            'без проверки на Null возможнен вылет с ошибкой
            If IsNull(value) Then
               value = ""
               ElseIf IsArray(value) Then
                      value = Join(value, ",")
               ElseIf Right(names(i), 4) = "(Мб)" Then
                      value = CStr(Round(value / 1024 ^ 2))
               ElseIf Right(names(i), 4) = "(Гб)" Then
                      value = CStr(Round(value / 1024 ^ 3))
               ElseIf prop.CIMType = 101 Then
                      value = ReadableDate(value)
             End If
             value = Trim(Replace(value, ";", "_"))
             If Len(value) > 0 Then
                    strInform = strInform & vbCrLf & names(i) & "  -        " & value
             End If
        Next
    Next
End Sub
Function ReadableDate(str)
    ReadableDate = Mid(str, 7, 2) & "." & Mid(str, 5, 2) & "." & Left(str, 4)
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы