Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何获取Mac OS X的active Desktop的ID?_Cocoa_Api_Desktop_Spaces - Fatal编程技术网

Cocoa 如何获取Mac OS X的active Desktop的ID?

Cocoa 如何获取Mac OS X的active Desktop的ID?,cocoa,api,desktop,spaces,Cocoa,Api,Desktop,Spaces,当您有多台台式机时,是否有办法在Mac OS X中获取active Desktop的ID。我找不到用于此的方法或API。使用HIWindowGetCGWindowID为您的WindowRef获取CGWindowID 将该ID与CGWindowListCreateDescriptionFromArray中的CGWindow.h一起使用,以获取有关窗口的信息 查看返回的字典并提取(可选)kCGWindowWorkspace键 这是您窗口的空间ID。 来源:如果你看一下~/Library/Prefer

当您有多台台式机时,是否有办法在Mac OS X中获取active Desktop的ID。我找不到用于此的方法或API。

使用
HIWindowGetCGWindowID
为您的
WindowRef
获取
CGWindowID

将该ID与
CGWindowListCreateDescriptionFromArray
中的
CGWindow.h
一起使用,以获取有关窗口的信息

查看返回的字典并提取(可选)
kCGWindowWorkspace

这是您窗口的空间ID。


来源:

如果你看一下
~/Library/Preferences/com.apple.spaces.plist
,它似乎包含一个按窗口编号组织的空间及其窗口列表。每个空间都有一个名称(前两个似乎是dashboard和空字符串,我假设它是第一个默认桌面)。如果可以获取对窗口编号的引用,则可以尝试在此plist结构中查找该编号,以确定其当前所在的空间。这可能对您有用,也可能不有用,这取决于您试图如何处理这些信息。

active desktop的意思是什么?您是在谈论OS X中的空格功能吗?使用恰当的术语通常在技术上有所帮助……是的,我指的是OSX中的空格功能。谢谢。我尝试了这个
-(int)spaceNumber{CFArrayRef windowsInSpace=CGWindowListCopyWindowInfo(kcgwindowlistoptional | kcgwindowlistoptiononsScreenOnly,kCGNullWindowID);for(NSMutableDictionary*此窗口在(NSArray*)windowsInSpace中){if([thisWindow objectForKey:(id)kCGWindowWorkspace])返回[[thisWindow objectForKey:(id)kCGWindowWorkspace]intValue];}}返回-1;}
但它不起作用。它总是返回-1。可能是因为Mac OS X 10.8中不推荐使用
kCGWindowWorkspace
。@user2212391:是否有类似不推荐的警告?是的,有警告,但有时不推荐的API仍然起作用。但在这种情况下,它似乎不再起作用。是否有其他方法获取工作区ID?