Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用CGDisplayStream检测窗口移动_Macos_Quartz Core - Fatal编程技术网

Macos 使用CGDisplayStream检测窗口移动

Macos 使用CGDisplayStream检测窗口移动,macos,quartz-core,Macos,Quartz Core,我想检测窗口何时被实时移动,并认为CGDisplayStreamCreate等应该提供这一点。但在调用CGDisplayStreamFrameAvailableHandler时,我很难确定要移动哪个窗口。有没有一种直接的方法可以将更新的RECT与应用程序及其窗口进行匹配?CGDisplayStream无法告诉您哪些应用程序/窗口负责给定的屏幕更新。您可能可以使用另一个API(如可访问性)来确定窗口位置,然后猜测KCGDisplayStreamUpdateMoveDirects中的哪个对应于每个窗

我想检测窗口何时被实时移动,并认为CGDisplayStreamCreate等应该提供这一点。但在调用CGDisplayStreamFrameAvailableHandler时,我很难确定要移动哪个窗口。有没有一种直接的方法可以将更新的RECT与应用程序及其窗口进行匹配?

CGDisplayStream无法告诉您哪些应用程序/窗口负责给定的屏幕更新。您可能可以使用另一个API(如可访问性)来确定窗口位置,然后猜测KCGDisplayStreamUpdateMoveDirects中的哪个对应于每个窗口,但这不是很可靠。如果您要选择可访问性路径,您还可以对窗口移动事件使用可访问性通知:

如果您在移动窗口时还需要窗口的像素内容,那么您需要在CGDisplayStream和可访问性回调之间进行一些不幸的时间对齐