Enc*_*ada 13 macos cocoa osx-leopard objective-c osx-snow-leopard
假设我想编写一个简单的Cocoa应用程序,以使Leopard的Spaces功能更有用.我想配置每个空间,比方说不同
所以我的问题分为两部分:
更新:从Mac App Store中的所有Spaces相关应用程序判断,必须有一些公共API方法.
Ben*_*Low 11
正如彼得所说,在10.6中,您可以使用它NSWorkSpace NSWorkspaceActiveSpaceDidChangeNotification来在工作空间发生变化时收到通知.
然后,您可以使用Quartz API确定当前空间,kCGWindowWorkspace字典键保存工作空间.例如:
int currentSpace;
// get an array of all the windows in the current Space
CFArrayRef windowsInSpace = CGWindowListCopyWindowInfo(kCGWindowListOptionAll | kCGWindowListOptionOnScreenOnly, kCGNullWindowID);      
// now loop over the array looking for a window with the kCGWindowWorkspace key
for (NSMutableDictionary *thisWindow in (NSArray *)windowsInSpace)
{
     if ([thisWindow objectForKey:(id)kCGWindowWorkspace])
       {
           currentSpace = [thisWindow objectForKey(id)kCGWindowWorkspace] intValue];
           break;
       }
}
或者你可以使用私有API获取Space,看看CGSPrivate.h,它允许你这样做:
int currentSpace = 0;
CGSGetWorkspace(_CGSDefaultConnection(), ¤tSpace);
要更改屏幕分辨率,您需要查看Quartz服务,要更改音量,这可能会有所帮助.
NSWorkspace NSWorkspaceActiveSpaceDidChangeNotification在其自己的通知中心发布了一个,但仅限于Snow Leopard.
| 归档时间: | 
 | 
| 查看次数: | 3612 次 | 
| 最近记录: |