我正在使用Cocoa Accessibility API尝试修改另一个应用程序中的文本字段(AXTextField)的值,但我遇到了一个问题:我的代码正确识别并修改了文本字段的内容问题,并且该字段的文本明显改变,但是我试图控制的程序没有记录这些更改。有没有办法在API中执行此操作而无需生成键盘事件?
示例代码:
AXUIElementCopyElementAtPosition(appRef,
clickPoint.x,
clickPoint.y,
&boxRef);
NSString *valueToSet = [NSString stringWithFormat:@"%f",amount];
AXUIElementSetAttributeValue(boxRef,kAXValueAttribute,valueToSet);
文本字段更改为“金额”中指定的值,但另一个程序无法识别更改 - 我必须在自己输入数字以使其获取更改(我可以区分,因为程序在框中键入新值时响应。有人能指出我正确的方向吗?
答案 0 :(得分:1)
对于后代:知情人士告诉我,这实际上是我试图控制的应用程序中的一个错误。您可以通过使用UI浏览器(http://prefabsoftware.com/uibrowser/)来尝试设置文本字段的值来区分;如果UI浏览器无法进行更改,那么问题将无法控制。
答案 1 :(得分:0)
尝试告诉文字字段: 执行动作“AXConfirm”
这是Applescript,但无论Cocoa等价物如何,即使UI浏览器不能(我之前已经使用过它),它也可能会使更改变得坚持。