正如 Peter 所说,在 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 获取空间,查看CGSPrivate.h,它允许您执行此操作:
int currentSpace = 0;
CGSGetWorkspace(_CGSDefaultConnection(), ¤tSpace);
要更改屏幕分辨率,您需要查看Quartz 服务,对于更改音量,这可能会有所帮助。