我找到了另一个question and answer,它解释了如何使用Accessibility API获取窗口的宽度,高度和位置。有什么方法可以找到最小大小,最大大小,调整大小增量等?

编辑:

我当前的方法是使用AXUIElementCopyAttributeValue,但是我不确定这是可能的。查看reference,您可以看到有很多属性可以访问,但是我找不到任何关于窗口的最小或最大大小的信息。请注意,似乎可以通过此API访问职位。

现在,我还查看了一些名为Son of Grab的示例代码,该示例代码也可以访问窗口的大小和位置,但是我不认为该方法适用于最小或最大大小。

最佳答案

据我所知,这没有简单的方法。我发现一种非常粗糙的方法可以获取窗口的最大和最小大小。

它涉及将宽度和高度设置为非常大的数字,以查看窗口调整大小的距离,然后记住该大小为最大值,然后将宽度和高度设置为较小的数字,然后再次执行相同的操作。毕竟,我只是将宽度和高度重置为其原始值。

显而易见的问题是,用户已经很清楚地看到窗口已被调整大小。

至于调整大小的增量,目前我还没有想到任何获取该信息的解决方法。

无论如何,这是我用于计算最大和最小大小的代码:

AXUIElementRef window; // The window

AXValueRef sizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize windowSize;
AXValueGetValue(sizeValue, kAXValueCGSizeType, &windowSize);

CGFloat windowWidth = windowSize.width;
CGFloat windowHeight = windowSize.height;

// Set it to a very large number
[UIElementUtilities setStringValue:@"w=5000 h=5000" forAttribute:@"AXSize" ofUIElement:window];

AXValueRef maxSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize maxWindowSize;
AXValueGetValue(maxSizeValue, kAXValueCGSizeType, &maxWindowSize);

CGFloat maxWindowWidth = maxWindowSize.width;
CGFloat maxWindowHeight = maxWindowSize.height;

NSLog(@"max width = %f. max height = %f.", maxWindowWidth, maxWindowHeight);

// Set it to a very small number
[UIElementUtilities setStringValue:@"w=0 h=0" forAttribute:@"AXSize" ofUIElement:window];

AXValueRef minSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize minWindowSize;
AXValueGetValue(minSizeValue, kAXValueCGSizeType, &minWindowSize);

CGFloat minWindowWidth = minWindowSize.width;
CGFloat minWindowHeight = minWindowSize.height;

NSLog(@"min width = %f. min height = %f.", minWindowWidth, minWindowHeight);

// Reset size
[UIElementUtilities setStringValue:[NSString stringWithFormat:@"w=%f h=%f", windowWidth, windowHeight] forAttribute:@"AXSize" ofUIElement:window];

如果您想知道,UIElementUtilities是我从一个名为UIElementInspector的Apple示例项目中摘录的类。

关于objective-c - OS X可访问性API的最小宽度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6992174/

10-11 22:29
查看更多