Как я могу активировать определенное окно внешнего приложения в OSX? - PullRequest
3 голосов
/ 15 февраля 2011

Я пытаюсь управлять окнами Safari из своего приложения.

Я использую этот код для получения списка окон из Safari через ScriptingBridge:

SafariApplication *saf = [SBApplication ApplicationWithProcessIdentifier:myPid];
SBElementArray *safariWindows = [saf windows];

Пока все работает нормально.Я также могу управлять порядком окон со свойством index что-то вроде этого:

SafariWindow *firstSafWin = [saf.windows objectAtIndex:0];
[firstSafWin setIndex: 1];
Теперь я пытаюсь активировать Safari с помощью:
NSRunningApplication *runApp =  [NSRunningApplication runningApplicationWithProcessIdentifier: myPid];           
    [runApp activateWithOptions: NSApplicationActivateAllWindows];

Итак, возникает моя проблема: Safari активируется, и окно, которое я хотел, теперь находится сверху, , но не получает фокус (или "mainWindow").Таким образом, фокус ввода пользователя по-прежнему находится в окне Safari, в котором он находился до того, как я попытался изменить порядок окон Safari.

Есть ли способ в OSX, чтобы получить фокус в окне Safari Iхотите?

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Доступность API может предоставить вам этот уровень контроля, но он должен быть включен на компьютере пользователя.

0 голосов
/ 17 февраля 2011

FWIW, то, что вы делаете, должно работать.Вы должны подать отчет об ошибке в Safari.

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