2009-06-10 4 views
0

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

Пример кода:

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

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

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

ответ

1

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

0

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

Это Applescript, но все, что эквивалент какао, оно может сделать палку изменения, даже если пользовательский интерфейс браузер не могу (я использовал его раньше).

 Смежные вопросы

  • Нет связанных вопросов^_^