Я хочу установить определенное окно из внешнего приложения (например, textedit), чтобы оно было впереди большинства.
Я могу успешно получить ссылку на само приложение, используя GetFrontProcess, и проверить, является ли оно наиболее передним. Если это не так, я могу использовать setFrontProcess, чтобы сделать его сфокусированным.
Затем я могу использовать API специальных возможностей, чтобы проверить все окна в этом приложении. Я проверяю, существует ли определенное окно, и если да, сравниваю его с самым передним окном приложения:
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
Если интересующее меня окно не является передним, мне нужно установить его так. Я думал, что мог бы использовать AXUIElement Set AttributeValue, чтобы сделать это, но я не получаю никакого успеха. Вот как я пытался это сделать.
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
Я проверил, что окно существует, и приложение успешно «переключено». Но почему эта строка кода не выводит указанное окно вперед?
Спасибо.