相关疑难解决方法(0)

当 CGWindow 部分离屏时,如何判断 CGWindow 显示在哪个屏幕上?

我得到一个CGWindows列表,CGWindowListCreate如下所示:

CFArrayRef windows = CGWindowListCreate(kCGWindowListOptionOnScreenOnly, 0);
Run Code Online (Sandbox Code Playgroud)

有没有办法知道NSScreen每个窗口在哪个窗口?我试图查看窗口边界和屏幕框架的交集,但如果一个窗口部分离开屏幕,它可以与另一个屏幕的框架相交。

有没有更可靠的方法来做到这一点?

macos window screen core-graphics

10
推荐指数
0
解决办法
586
查看次数

给定窗口ID,确定窗口所在的屏幕

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)

cocoa nswindow

6
推荐指数
1
解决办法
1149
查看次数

标签 统计

cocoa ×1

core-graphics ×1

macos ×1

nswindow ×1

screen ×1

window ×1