如何在OSX中激活外部应用程序的特定窗口?

时间:2011-02-15 05:18:56

标签: objective-c cocoa macos safari

我正在尝试从我的应用程序中控制Safari窗口。

我使用此代码通过ScriptingBridge从Safari获取窗口列表:

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

到目前为止,此工作正常。 我也可以使用索引属性来管理窗口的顺序,如下所示:     

SafariWindow *firstSafWin = [saf.windows objectAtIndex:0];
[firstSafWin setIndex: 1];
现在我尝试用以下方式激活Safari:

NSRunningApplication *runApp =  [NSRunningApplication runningApplicationWithProcessIdentifier: myPid];           
    [runApp activateWithOptions: NSApplicationActivateAllWindows];

所以我的问题出现了:
Safari被激活,我想要的窗口现在位于顶部,但它没有得到焦点(或“mainWindow”)。因此,在我尝试更改Safari窗口的顺序之前,用户输入的焦点仍然在safari窗口上,该窗口具有焦点。

OSX中是否有办法将焦点集中到我想要的Safari窗口?

2 个答案:

答案 0 :(得分:1)

Accessibility API可以为您提供此级别的控制,但必须在用户的计算机上启用它。

答案 1 :(得分:0)

FWIW,你在做什么应该工作。您应该针对Safari提交错误报告。

相关问题