Cocoa - 捕获鼠标就像screencapture实用程序一样

时间:2013-10-28 23:03:47

标签: mouse screen-capture mousecapture

我试图找到一个基本上让我疯狂的话题的答案。有没有办法像Apple的screencapture工具一样捕获鼠标指针?我想要做的是要求我绘制一个清晰的窗口,不会激活我的应用程序,而是覆盖所有内容,包括Dock。我见过的唯一软件就是利用命令+ shift + 4进行屏幕捕获。

我尝试过创建一个非激活的NSPanel,但除非我的应用处于活动状态(我不希望它),否则它不能用于光标。另外NSPanel的问题是,如果我在仪表板中,我无法激活它上面的窗口。

我想要做的是这个要求。 •我的应用不得激活(将任何活动应用保持为活动状态) •必须能够更改NSCursor •鼠标不会触发停靠隐藏/取消隐藏(或任何其他事件) •甚至在仪表板中工作

我之前尝试过此代码,但其限制与上面列出的相同。

NSScreen * s = [NSScreen mainScreen];

[self.window setStyleMask:NSNonactivatingPanelMask];
[self.window setHasShadow:NO];
[self.window setOpaque:NO];
[self.window setBackgroundColor:[NSColor clearColor]];
[self.window setFrame:s.frame display:NO];
[self.window orderFront:self];
[self.window setLevel:NSMainMenuWindowLevel + 1];
[self.trackingView addCursorRect:self.window.frame cursor:[NSCursor closedHandCursor]];

1 个答案:

答案 0 :(得分:1)

事实证明,使用CGEventTap并在将鼠标事件分发到任何应用程序之前控制鼠标事件。不幸的是,如果你有一个沙盒应用程序,那么你不能使用CGEventTap。有人知道是否有办法通过沙盒获得相同的功能?