CGDisplayCopyAllDisplayModes()未提供可用模式的完整列表

时间:2012-07-24 19:24:24

标签: objective-c macos cocoa osx-lion screen-resolution

我一直在尝试编写一个简单的应用程序,将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); 

0 个答案:

没有答案