以编程方式设置AXTextField的值(OS X Cocoa Accessibility API)

时间:2009-06-10 04:42:15

标签: cocoa macos accessibility

我正在使用Cocoa Accessibility API尝试修改另一个应用程序中的文本字段(AXTextField)的值,但我遇到了一个问题:我的代码正确识别并修改了文本字段的内容问题,并且该字段的文本明显改变,但是我试图控制的程序没有记录这些更改。有没有办法在API中执行此操作而无需生成键盘事件?

示例代码:

AXUIElementCopyElementAtPosition(appRef,
                clickPoint.x,
                clickPoint.y,
                &boxRef);

NSString *valueToSet = [NSString stringWithFormat:@"%f",amount];
AXUIElementSetAttributeValue(boxRef,kAXValueAttribute,valueToSet);

文本字段更改为“金额”中指定的值,但另一个程序无法识别更改 - 我必须在自己输入数字以使其获取更改(我可以区分,因为程序在框中键入新值时响应。有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:1)

对于后代:知情人士告诉我,这实际上是我试图控制的应用程序中的一个错误。您可以通过使用UI浏览器(http://prefabsoftware.com/uibrowser/)来尝试设置文本字段的值来区分;如果UI浏览器无法进行更改,那么问题将无法控制。

答案 1 :(得分:0)

尝试告诉文字字段: 执行动作“AXConfirm”

这是Applescript,但无论Cocoa等价物如何,即使UI浏览器不能(我之前已经使用过它),它也可能会使更改变得坚持。