可调整大小的窗口 - kAXGrowAreaAttribute始终返回NULL

时间:2011-11-28 09:37:42

标签: cocoa window resizable accessibility-api

在我的应用中,我想检查来自其他应用的窗口是否可以调整大小。

我正在使用辅助功能API来测试窗口是否具有kAXGrowAreaAttribute属性(如果NULL不可调整大小),正如Peter Hosey在this question中回答的那样。

问题是kAXGrowAreaAttribute返回的值总是为NULL,如果窗口可调整大小,则无关紧要。注意:要从Apple UIElementInspector示例中使用UIElementUtilities类检索值(我也尝试使用AXUIElementCopyAttributeValue直接使用相同的结果)。

有什么想法吗?我在Lion工作,可能是这个问题吗?提前谢谢。

已编辑:

使用UIElementUtilities类方法我找到了一个解决方案。

只需使用方法

即可

+ (BOOL)canSetAttribute:(NSString *)attributeName ofUIElement:(AXUIElementRef)element

使用kAXSizeAttribute和焦点窗口。它返回YES或NO,具体取决于窗口是否大小......

2 个答案:

答案 0 :(得分:2)

这可能是因为你在狮子座。大小的盒子被杀掉了;可调整大小的窗口现在可以在每个边缘调整大小。

是的,测试尺寸是否可以改变可能是正确的方法。它似乎对Snow Leopard有用。

答案 1 :(得分:0)

Swift 5版本

func isResizable(axElement: AXUIElement) -> Bool {
    var resizable: DarwinBoolean = true
    let status = AXUIElementIsAttributeSettable(axElement, kAXSizeAttribute as CFString, &resizable)

    if status != .success {
        print("unable to determine if window is resizable")
    }
    return resizable.boolValue
}