Установка значения AXTextField программно (OS X Cocoa Accessibility API) - PullRequest
0 голосов
/ 10 июня 2009

Я использую API доступа к Cocoa, чтобы попытаться изменить значение текстового поля (AXTextField) в другом приложении, но я столкнулся с проблемой: мой код правильно определяет и изменяет содержимое текстового поля вопрос, и текст поля заметно меняется, но изменения не зарегистрированы программой, которую я пытаюсь контролировать. Есть ли способ сделать это с помощью API без необходимости генерировать события клавиатуры?

Пример кода:

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

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

И текстовое поле меняется на значение, указанное в «сумме», но другая программа не распознает это изменение - мне нужно набрать число в себе, чтобы оно забрало изменение (я могу сказать разницу потому что программа отвечает, когда в поле вводится новое значение). Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

1 голос
/ 12 июня 2009

Для потомков: информированные источники говорят мне, что это на самом деле ошибка в приложении, которое я пытаюсь контролировать. Вы можете заметить разницу, используя UI Browser (http://prefabsoftware.com/uibrowser/), чтобы попытаться установить значение текстового поля; если UI Browser не может сделать изменение, то вопрос вне вашего контроля.

0 голосов
/ 15 июля 2009

Попробуйте указать текстовое поле: выполнить действие "AXConfirm"

Это Applescript, но каким бы ни был какао-эквивалент, он может измениться, даже если UI Browser не может (я использовал его раньше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...