Получить информацию о видеокарте - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д