2011-03-14 75 views
1

有没有一种方法(不使用任何未公开的API)来确定是否拖动了任何窗口(不仅仅是运行代码的应用程序)?检测是否有任何窗口被拖动

我可以使用

[NSEvent addGlobalMonitorForEventsMatchingMask:] 

但这只是一般的拖动,有没有办法判断是beign拖动或不是一个窗口。

谢谢!

更新:我想答案可能在于这两个功能: CGSGetWindowBounds CGSNewRegionWithData 如果有人能告诉我这些功能做,在哪里可以找到他们的文件,那就太好了!谢谢。

回答

-1

我不知道是否有更好的方法,但这里的做到这一点的一种方法:

创建BOOL伊娃跟踪是否正在移动或不是窗口。然后注册为NSWindowWillMoveNotification和​​通知:

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 
[nc addObserver:self selector:@selector(windowWillMove:) name:NSWindowWillMoveNotification object:nil]; 
[nc addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:nil]; 

然后办理通知,并设置适当的伊娃:

- (void)windowWillMove:(NSNotification*)notification 
{ 
    windowBeingDragged = YES; 
} 

- (void)windowDidMove:(NSNotification*)notification 
{ 
    windowBeingDragged = NO; 
} 

现在你可以查一下这种情况下,伊娃的(windowBeingDragged价值,检查一个窗口是否被拖动)。

+0

感谢您的意见。但是,这些通知是针对应用程序拥有的窗口...我询问任何应用程序的窗口。 – user635064 2011-03-14 02:02:39

+0

哎呀,对不起,我错过了那部分。在那种情况下,我不确定。 – indragie 2011-03-14 02:04:04

0

您唯一可行的,系统支持的API是Accessibility Framework。您可以通过这种方式获得notifications以用于其他应用程序的窗口,但访问读取/修改仅限于位置/大小。

相关问题