使用CGDisplayStream检测窗口移动

时间:2014-03-02 20:19:16

标签: macos quartz-core

我想检测实时移动窗口的时间,并认为CGDisplayStreamCreate等应该提供。但是当我调用CGDisplayStreamFrameAvailableHandler时,我很难决定移动哪个窗口。是否有直接的方法将更新的rects与应用程序及其窗口相匹配?

1 个答案:

答案 0 :(得分:0)

CGDisplayStream无法告诉您哪些应用程序/窗口负责给定的屏幕更新。您可以使用其他API(如Accessibility)来确定窗口位置,然后猜测哪个kCGDisplayStreamUpdateMovedRects对应于每个窗口,但这不会非常可靠。如果您要去辅助功能的路线,您也可以使用窗口移动事件的辅助功能通知:How can my app detect a change to another app's window?

如果你在移动时也需要窗口的像素内容,那么你需要在CGDisplayStream和Accessibility回调之间进行一些不幸的时间对齐。