我一直在尝试编写一个简单的应用程序,将 iMac 和连接的投影仪的显示分辨率重置为 1024x768、85 Hz 和 32 位颜色。
当投影仪通过 VGA 或 HDMI 直接连接到 mac 时,CGDisplayCopyAllDisplayModes() 函数会给出一个模式列表,其中包括我要应用的设置。但是我的大学使用 Extron VGA 墙盒将 VGA 线连接到投影仪,这会导致 CGDisplayCopyAllDisplayModes() 提供更小的(仅 800x600 和 640X480)模式列表。此外,使用壁挂盒时的显示器名称只是 VGA 显示器,而不是 Np-511 或投影仪的名称。奇怪的是,系统偏好设置->显示即使在那时也显示 1024x768 设置,让我也应用它。
有什么方法可以为投影仪获取更大的模式列表,从头开始创建 1024x768 模式并应用它(我已经确认投影仪支持它)或者只是让系统偏好为我选择该模式?我已经写了一个applescript来做后者,但是显示偏好会根据连接的投影仪而变化,所以我需要一个更通用的解决方案。
期待您的帮助!我添加了一些我使用的代码,如果有帮助可以包含更多代码。
CGGetOnlineDisplayList (MAX_DISPLAYS, displays, &numDisplays); // to get list of display ids
// ... now iterating over list of displays
CFArrayRef modeList = CGDisplayCopyAllDisplayModes (displays[i], NULL);