检测是否正在拖动任何窗口

有没有办法(不使用任何未记录的API)来确定是否正在拖动任何窗口(而不仅仅是运行代码的应用程序)? 我可以用
[NSEvent addGlobalMonitorForEventsMatchingMask:]
但这仅适用于一般拖动,并且没有办法判断窗口是否被拖动。 谢谢! 更新:我认为答案可能在于这两个功能: CGSGetWindowBounds CGSNewRegionWithData 如果有人能告诉我这些功能的作用以及我可以在哪里找到它们的文档,那就太棒了!谢谢。     
已邀请:
您唯一可行的,系统支持的API是辅助功能框架。您可以通过这种方式获取其他应用程序窗口的通知,但读取/修改的权限仅限于位置/大小。     

bab

我不确定是否有更好的方法,但这是一种方法: 创建一个跟踪窗口是否移动的
BOOL
ivar。然后注册
NSWindowWillMoveNotification
NSWindowDidMoveNotication
通知:
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(windowWillMove:) name:NSWindowWillMoveNotification object:nil];
[nc addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:nil];
然后处理通知并适当地设置ivar:
- (void)windowWillMove:(NSNotification*)notification
{
    windowBeingDragged = YES;
}

- (void)windowDidMove:(NSNotification*)notification
{
    windowBeingDragged = NO;
}
现在您可以检查ivar的值(在这种情况下,
windowBeingDragged
,以检查窗口是否被拖动)。     

要回复问题请先登录注册