Установка окна процесса на передний план. Почему это не работает, когда развернуто? - PullRequest
1 голос
/ 11 марта 2012

Я пытаюсь получить окно приложения (скажем, Firefox в качестве примера), вывести его на передний план и сфокусировать.Он отлично работает, когда программа не развернута, что позволяет мне вывести любое из окон Firefox на передний план.

Однако при максимизации он просто выводит всю группу окон вперед, независимо от того, было ли это окно, которое я специально выбрал.Вот что я использую:

AXUIElementPerformAction (element, kAXRaiseAction);
ProcessSerialNumber psn = [self serialNumberOfPid: [appPid unsignedIntValue]];
SetFrontProcessWithOptions (&psn, kSetFrontProcessFrontWindowOnly);

Читая другие посты, я попробовал это:

AXUIElementSetAttributeValue(element, kAXMainAttribute, kCFBooleanTrue);
AXUIElementSetAttributeValue(element, kAXFocusedAttribute, kCFBooleanTrue);
AXUIElementPerformAction (element, kAXRaiseAction);
    ProcessSerialNumber psn = [self serialNumberOfPid: [appPid unsignedIntValue]];
SetFrontProcessWithOptions (&psn, kSetFrontProcessFrontWindowOnly);

Что я делаю не так?Почему это происходит только тогда, когда окна развернуты?Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 31 января 2016

Попробуйте использовать свойство kAXFrontmostAttribute:

AXUIElementSetAttributeValue(element, kAXFrontmostAttribute, kCFBooleanTrue);
...