2011-02-15 148 views
2

我想从我的应用程序中控制Safari窗口。如何在OSX中激活外部应用程序的特定窗口?

我使用此代码通过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窗口?

回答

1

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

+0

Thx Joshua!奇迹般有效! – boomer 2011-02-16 15:55:56

0

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