python - 检测硬件图形支持
问题描述
我正在寻找一种以编程方式区分在具有硬件图形支持的机器上运行的方法,例如
而不是在没有硬件驱动程序的情况下运行,在这种情况下,我将恢复为软件渲染
我尝试过使用该wmi
模块,但是在前一种情况下,当图形硬件可用时,我在视频控制器中找不到任何表明它们被正确检测到的东西
import wmi
pc = wmi.WMI()
for graphics in pc.Win32_VideoController():
print(graphics.properties)
输出
{'AcceleratorCapabilities': None, 'AdapterCompatibility': None, 'AdapterDACType': None, 'AdapterRAM': None, 'Availability': None, 'CapabilityDescriptions': None, 'Caption': None, 'ColorTableEntries': None, 'ConfigManagerErrorCode': None, 'ConfigManagerUserConfig': None, 'CreationClassName': None, 'CurrentBitsPerPixel': None, 'CurrentHorizontalResolution': None, 'CurrentNumberOfColors': None, 'CurrentNumberOfColumns': None, 'CurrentNumberOfRows': None, 'CurrentRefreshRate': None, 'CurrentScanMode': None, 'CurrentVerticalResolution': None, 'Description': None, 'DeviceID': None, 'DeviceSpecificPens': None, 'DitherType': None, 'DriverDate': None, 'DriverVersion': None, 'ErrorCleared': None, 'ErrorDescription': None, 'ICMIntent': None, 'ICMMethod': None, 'InfFilename': None, 'InfSection': None, 'InstallDate': None, 'InstalledDisplayDrivers': None, 'LastErrorCode': None, 'MaxMemorySupported': None, 'MaxNumberControlled': None, 'MaxRefreshRate': None, 'MinRefreshRate': None, 'Monochrome': None, 'Name': None, 'NumberOfColorPlanes': None, 'NumberOfVideoPages': None, 'PNPDeviceID': None, 'PowerManagementCapabilities': None, 'PowerManagementSupported': None, 'ProtocolSupported': None, 'ReservedSystemPaletteEntries': None, 'SpecificationVersion': None, 'Status': None, 'StatusInfo': None, 'SystemCreationClassName': None, 'SystemName': None, 'SystemPaletteEntries': None, 'TimeOfLastReset': None, 'VideoArchitecture': None, 'VideoMemoryType': None, 'VideoMode': None, 'VideoModeDescription': None, 'VideoProcessor': None}
{'AcceleratorCapabilities': None, 'AdapterCompatibility': None, 'AdapterDACType': None, 'AdapterRAM': None, 'Availability': None, 'CapabilityDescriptions': None, 'Caption': None, 'ColorTableEntries': None, 'ConfigManagerErrorCode': None, 'ConfigManagerUserConfig': None, 'CreationClassName': None, 'CurrentBitsPerPixel': None, 'CurrentHorizontalResolution': None, 'CurrentNumberOfColors': None, 'CurrentNumberOfColumns': None, 'CurrentNumberOfRows': None, 'CurrentRefreshRate': None, 'CurrentScanMode': None, 'CurrentVerticalResolution': None, 'Description': None, 'DeviceID': None, 'DeviceSpecificPens': None, 'DitherType': None, 'DriverDate': None, 'DriverVersion': None, 'ErrorCleared': None, 'ErrorDescription': None, 'ICMIntent': None, 'ICMMethod': None, 'InfFilename': None, 'InfSection': None, 'InstallDate': None, 'InstalledDisplayDrivers': None, 'LastErrorCode': None, 'MaxMemorySupported': None, 'MaxNumberControlled': None, 'MaxRefreshRate': None, 'MinRefreshRate': None, 'Monochrome': None, 'Name': None, 'NumberOfColorPlanes': None, 'NumberOfVideoPages': None, 'PNPDeviceID': None, 'PowerManagementCapabilities': None, 'PowerManagementSupported': None, 'ProtocolSupported': None, 'ReservedSystemPaletteEntries': None, 'SpecificationVersion': None, 'Status': None, 'StatusInfo': None, 'SystemCreationClassName': None, 'SystemName': None, 'SystemPaletteEntries': None, 'TimeOfLastReset': None, 'VideoArchitecture': None, 'VideoMemoryType': None, 'VideoMode': None, 'VideoModeDescription': None, 'VideoProcessor': None}
如果这很重要,我将针对 Windows 系统,以防有特定于操作系统的解决方案。
解决方案
实现此目的的一种方法是使用infi.devicemanager
检测'Microsoft Basic Display Driver'
设备描述中是否列出,这表明缺乏硬件图形支持。
from infi.devicemanager import DeviceManager
def has_hardware_graphics():
dm = DeviceManager()
return all(dev.description != 'Microsoft Basic Display Driver' for dev in dm.all_devices)
推荐阅读
- html - 用另一个数组中的一个数组填充表 *ngFor
- debugging - 在 Visual Studio 代码中调试 Blazor webasm
- html - 如何设置背景颜色的宽度等于标题标签的宽度?
- python - 在 Windows 7 上使用 Cython 编译 python 失败
- pytorch - PyTorch:无法运行我的 fit 功能
- javascript - 为什么使用字符串作为请求正文时,Axios 发送我的 POST 请求时使用 Content-Type application/x-www-form-urlencoded?
- flutter - Dart/Flutter - 如何在格式化值时避免由 NumberFormat.compactCurrency(locale: "en_IN").format() 方法完成的自动舍入?
- javascript - 当我出于某种原因组合减速器时,我的 auth 减速器没有附加到商店,那是怎么回事?
- python - 使用 OpenCV 将相机坐标中的点云均匀变换到世界坐标
- swift - UITableView 的委托是 Nil