【问题标题】:Window resizable - kAXGrowAreaAttribute always return NULL窗口可调整大小 - kAXGrowAreaAttribute 始终返回 NULL
【发布时间】:2011-11-28 09:37:42
【问题描述】:

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

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

问题在于 kAXGrowAreaAttribute 返回的值始终为 NULL,无论窗口是否可调整大小都无关紧要。注意:要检索值,我使用 Apple UIElementInspector 示例中的 UIElementUtilities 类(我也尝试过直接使用 AXUIElementCopyAttributeValue 并获得相同的结果)。

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

已编辑:

玩弄 UIElementUtilities 类方法,我找到了解决方案。

只要使用方法

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

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

【问题讨论】:

    标签: cocoa window resizable accessibility-api


    【解决方案1】:

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

    是的,测试大小是否可以更改可能是正确的方法。它似乎在雪豹中对我有用。

    【讨论】:

    • 谢谢彼得!大小框被杀死是完全合理的(我没有意识到现在在 Lion 中每个边缘都调整了窗口大小)。我已经在 Lion 中测试过(检查大小属性是否可以更改),效果很好。很高兴知道它也适用于雪豹。再次感谢
    【解决方案2】:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多