我正在尝试找到一个Carbon API,该API可以从窗口ID中为我提供WindowRef,并希望该窗口具有界限?

编辑:我发现API
extern WindowRef HIWindowFromCGWindowID(CGWindowID inWindowID);但是我无法使用它。我包括了carbon header ,并且还将其框架添加到了项目中。 HI API是否还有其他要求?

任何帮助表示赞赏。
感谢您的时间。

最佳答案

以下应该做的-

        CGRect rect;
        uint32_t windowid[1] = {windowID};
        CFArrayRef windowArray = CFArrayCreate ( NULL, (const void **)windowid, 1 ,NULL);
        CFArrayRef windowsdescription = CGWindowListCreateDescriptionFromArray(windowArray);
        CFDictionaryRef windowdescription = (CFDictionaryRef)CFArrayGetValueAtIndex ((CFArrayRef)windowsdescription, 0);
        if(CFDictionaryContainsKey(windowdescription, kCGWindowBounds))
        {
            CFDictionaryRef bounds = (CFDictionaryRef)CFDictionaryGetValue (windowdescription, kCGWindowBounds);
            if(bounds)
            {
                CGRectMakeWithDictionaryRepresentation(bounds, &rect);
            }
        }
        CFRelease(windowArray);

关于macos - 获取WindowRef的边界?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6593710/

10-12 20:41