NSScreen假设我有窗口ID,有没有办法获得另一个进程的窗口?
我与以下代码非常接近,但信息字典没有说明窗口在哪个屏幕上.
CFArrayRef windowArray = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
NSArray* windowList = (NSArray*)CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly, kCGNullWindowID);
NSUInteger count = [windowList count];
for (NSUInteger i = 0; i < count; i++)
{
NSDictionary* nswindowsdescription = [windowList objectAtIndex:i];
NSNumber* windowid = (NSNumber*)[nswindowsdescription objectForKey:@"kCGWindowNumber"];
if(windowid)
{
if ([windowid integerValue] == appWeAreLookingForWindowId)
{
Warning(@"Found it: %@", nswindowsdescription);
}
}
}
CFRelease(windowArray);
Run Code Online (Sandbox Code Playgroud)
来自:CGWindowListCopyWindowInfo,kCGWindowLayer和窗口级别
这里输出:
kCGWindowAlpha = 1;
kCGWindowBounds = {
Height = 1010;
Width = 1600;
X = 284;
Y = 43;
};
kCGWindowIsOnscreen = 1; // …Run Code Online (Sandbox Code Playgroud) 我试图找到一个Carbon API,它可以从窗口id给我WindowRef,并且我想要有windowref的界面?
编辑:我发现API extern WindowRef HIWindowFromCGWindowID(CGWindowID inWindowID); 但我无法使用它.我已经包含了碳标头,并且还将其框架添加到项目中.HI apis还需要其他东西吗?
任何帮助表示赞赏.感谢您的时间.
我有一个窗口的 CGWindowID 和我的 Mac 的所有 CGDirectDisplayID。然后我想知道哪个显示窗口。我尝试获取窗口的 CGWindowInfo?但找不到有用的信息。
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionIncludingWindow, windowID);
CFArrayApplyFunction(windowList, CFRangeMake(0, CFArrayGetCount(windowList)), &WindowListApplierFunction, this);
CFRelease(windowList);
Run Code Online (Sandbox Code Playgroud)