2013-01-02 82 views
2

我需要知道最前面的應用程序是否處於全屏狀態。
這是我必須檢查(我知道NSApplicationPresentationOptions只有NSApplication的作品,但我不知道如何與NSRunningApplication做到這一點):如何檢查最前面的應用程序是否處於全屏狀態?

NSArray *activeApps = [[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"isActive==YES && bundleIdentifier!=%@", MY_BUNDLE_IDENTIFIER]]; 
if ([activeApps count] > 0){ 
    NSApplicationPresentationOptions opts = [[activeApps objectAtIndex:0] presentationOptions]; 
    timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(setupPlayer) userInfo:nil repeats:YES]; 
    if (opts & NSApplicationPresentationFullScreen) { 
     //Do something 
    }  
} 

所以,當我運行代碼,我明明得到下面的錯誤,因爲[activeApps objectAtIndex:0]NSRunningApplication

- [NSRunningApplication presentationOptions]:無法識別的選擇發送到實例...

關於如何修復它並檢查最前面的應用程序是否全屏的任何想法?或者還有其他替代方案來執行此操作嗎?

+0

'runningApplications'數組是'NSRunningApplication'。 'presentationOptions'適用於'NSApplication',而不是'NSRunningApplication',所以這就是你得到錯誤的原因。不過,我不確定是否有辦法實現您的目標。 –

+0

是的,沒錯。但我不知道任何其他方式將'NSRunningApplication'轉換爲'NSApplication'來檢查'presentationOptions':/ –

回答

0

您可以使用applescript檢查最前面的應用程序是否全屏。

腳本可以像,

1)獲取前是應用程序的最前面的窗口。 2)獲取該窗口的屬性值「AXFullScreen」。

這會讓你知道如果最前面的應用程序是全屏或不。

希望它有助於!

相關問題