决定是否激活外部显示器

时间:2011-10-29 10:08:40

标签: objective-c cocoa

我希望能够确定运行我的应用的计算机上的显示当前是处于活动状态还是关闭状态。我需要这个用于媒体中心软件,所以我知道在开始播放电影之前是否需要激活显示器。

到目前为止,我尝试使用此代码:

CGError err0 = CGDisplayNoErr;
CGError err1 = CGDisplayNoErr;
CGDisplayCount dspCount = 0;
err0 = CGGetActiveDisplayList(0, NULL, &dspCount);
CGDisplayCount onlineCount = 0;
err1 = CGGetOnlineDisplayList(0, NULL, &onlineCount);
// Error handling omitted for clarity ;)
NSLog(@"Found %d active and %d online displays", dspCount, onlineCount);

但是这段代码总是相同的。当我在我的Mac mini上尝试它时,关闭显示器后,我得到以下输出:

Found 1 active and 1 online displays

显示器未处于待机模式,因为我在不使用时断开了电源。我也在我的Mac书上试了这个,它有一个内部和外部显示器。它返回:

Found 2 active and 2 online displays

在这里它是相同的,我停用显示器并断开它的电源,但仍然返回为活动。

mac mini上的显示器是一个连接dvi到hdmi电缆的电视机。 mac book上的显示与dvi到vga连接器连接。

我希望有人知道如何解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

听起来你想知道连接的显示器是否处于睡眠状态?

您是否看过CGDisplayIsAsleep功能?

http://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html#//apple_ref/c/func/CGDisplayIsAsleep

答案 1 :(得分:0)

关闭这个未解决的问题。我的最终发现是,一旦外部监视器连接到计算机,给定的方法将返回它在那里。当显示器通电但未连接电源时,这也可以使用。

据我所知,没有办法找出我想知道的事情:(

当我控制从我的应用程序激活监视器的事件时(在我的情况下是我用usb控制的电视机)我可以通过这种方式获得监视器的状态,但这只有缺点当应用程序崩溃时,我将失去状态。但那是我能找到的最佳解决方案。