AXUIElementCopyAttributeValue не может быть завершен

Я пытаюсь использовать API специальных возможностей, чтобы получить активное окно, проблема в том, что когда я пытаюсь получить сфокусированное приложение, я получаю сообщение об ошибке «Не удается завершить». Ниже приведен небольшой фрагмент моего кода:

AXUIElementRef systemElement =
AXUIElementCreateSystemWide();

AXUIElementRef focused = nullptr;
AXError error = AXUIElementCopyAttributeValue (systemElement,
kAXFocusedApplicationAttribute, (CFTypeRef*) &focused);

// error value results in kAXErrorCannotComplete

У меня включена специальная доступность, и я сравнил свой код с кодом, найденным на GitHub, но, похоже, ничего не работает, и у меня нет идей. Возможно, я что-то пропускаю?

3

Решение

я пытался чтобы решить эту проблему, сначала установите тайм-аут обмена сообщениями:

AXError error_code = AXUIElementSetMessagingTimeout( system_element, 0.1f );

Что, возможно, не позволило элементу правильно скопировать значение атрибута, но это также не привело к зависанию (что и происходило, когда я получал kAXErrorCannotComplete). Как только я закончил пытаться собрать значение атрибута, я сбросил тайм-аут обмена сообщениями обратно к системному значению по умолчанию:

error_code = AXUIElementSetMessagingTimeout( system_element, 0.0f );

Кажется, это не помогло в моей ситуации, как я изначально думал. Оставляя ответ, хотя он, кажется, не решает проблему, он может предоставить некоторую информацию для кого-то.

0

Другие решения


По вопросам рекламы [email protected]