2011-08-09 43 views
7

Tôi tìm thấy một số khác question and answer giải thích cách lấy chiều rộng, chiều cao và vị trí của cửa sổ bằng API trợ năng. Có cách nào để tìm kích thước tối thiểu, kích thước tối đa, gia tăng kích thước, v.v ... không?OS X Accessibility API Chiều rộng tối thiểu

Edit:

cách tiếp cận hiện tại của tôi là sử dụng AXUIElementCopyAttributeValue nhưng tôi không chắc chắn đó là có thể. Nhìn vào reference bạn có thể thấy có rất nhiều thuộc tính tôi có thể truy cập, nhưng tôi không thể tìm thấy bất kỳ đề cập đến kích thước tối thiểu hoặc tối đa của cửa sổ. Lưu ý có vẻ như vị trí có thể truy cập thông qua API này.

Bây giờ tôi cũng đang xem một số mã mẫu có tên là Son of Grab cũng có thể truy cập kích thước cửa sổ và vị trí nhưng tôi không tin rằng phương thức đó cũng hoạt động ở kích thước tối thiểu hoặc tối đa.

+1

Ngoài ra, bạn có thể muốn có tỷ lệ cỡ ảnh. –

Trả lời

3

Theo như tôi có thể nói, không có cách nào dễ dàng về nó. Tôi đã tìm thấy một phương pháp rất thô để nhận kích thước tối đa và tối thiểu của cửa sổ.

Nó liên quan đến việc thiết lập chiều rộng và chiều cao thành một số rất lớn để xem khoảng cách của cửa sổ sẽ đổi kích thước như thế nào, sau đó đặt chiều rộng và chiều cao thành một số nhỏ và thực hiện lại. Sau khi tất cả điều này tôi chỉ cần thiết lập lại chiều rộng và chiều cao cho các giá trị ban đầu của họ.

Vấn đề rõ ràng với điều này là thực tế là người dùng có thể nhìn thấy cửa sổ đã được thay đổi kích thước.

Đối với số gia tăng kích thước, tôi không thể nghĩ ra (hiện tại) mọi cách giải quyết để nhận thông tin đó.

Dù sao đây là đoạn code tôi có để làm việc ra tối đa và kích thước tối thiểu:

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]; 

Trong trường hợp bạn đang tự hỏi, UIElementUtilities là một lớp học tôi đã lấy từ một trong những dự án ví dụ của Apple gọi UIElementInspector.

Các vấn đề liên quan