【发布时间】:2011-12-09 06:54:20
【问题描述】:
在 Mac 上,我可以使用以下内容打印出用于特定显示器的适配器:
io_registry_entry_t dspPort = CGDisplayIOServicePort(displays[i]);
CFDataRef model_;
model_ = (CFDataRef)IORegistryEntrySearchCFProperty(dspPort,kIOServicePlane,CFSTR("model"),
kCFAllocatorDefault,
kIORegistryIterateRecursively | kIORegistryIterateParents);
if (model_) {
newLine();
String model((const char*)CFDataGetBytePtr(model_), CFDataGetLength(model_));
log.printf("Adapter: %s", model.buf);
CFRelease(model_);
}
示例输出 - 适配器:AMD Radeon HD 6750M
其中displays[i] 使用CGGetActiveDisplayList(nDisplays, displays, &nDisplays); 填充
有什么方法可以在 Windows 上进行等效操作吗?我正在使用EnumDisplayMonitors 循环浏览所有显示器。
我可以使用EnumDisplayDevices 获取适配器列表,但是如何查看哪个监视器连接到哪个适配器?
编辑
使用:
for (int i=0; EnumDisplayDevicesA(monitorInfo.szDevice, i, &dev, 0); i++) {
newLine();
log.printf("Display Device: %s",(char*)dev.DeviceString);
}
我可以获取显示器本身的设备名称,但不能获取它们所连接的适配器!
【问题讨论】:
-
出于好奇(因为您刚刚接受了我的回答):您选择了哪条路线(如果有的话)?
-
我没有进一步了解。 Win32_VideoController 看起来很有希望,但这是一个小问题,所以我暂时搁置了它。