我正在创建一个OS X应用程序,它将作为其他一些应用程序的伴侣。它会将自己与最顶层应用程序的一侧对齐,就像侧边栏一样。目前,我只是定期获取打开的窗口列表,并将我的应用程序与最顶层的应用程序对齐。我是用NSTimer做的:
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(findHostWindow) userInfo:nil repeats:YES];
在findHostWindow中,我得到了一个窗口列表:
CFArrayRef windowDefs =
CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
我搜索windowDefs来找到理想的主机窗口。它很复杂而且无关紧要。然后我找到主机窗口的边界:
CFDictionaryRef bounds = (CFDictionaryRef)CFDictionaryGetValue(idealHostWindowDef, kCGWindowBounds);
然后我使用快照/停靠逻辑来模拟侧边栏。
我有两个问题:
这样的事情有更好的方法吗?也许是一个系统事件,当移动/调整任何窗口时会提醒应用程序?
在NSWindow中是否有一些更新方法,我可以重写以在重绘窗口之前执行此操作,而不是基于时间间隔的方法?
编辑:据我所知,Accessibility API可能会为此提供支持,但它不是实时的。它仅在用户完成移动/调整窗口大小后报告。
答案 0 :(得分:-2)
我知道你可以通过javascript操纵网页的前端。这包括实时行动。可能会找到一种方法来为触发时添加事件。
抱歉无法提供更多帮助