Какао - захват мыши, как утилита захвата экрана

Я пытаюсь найти ответ на тему, которая сводит меня с ума. Есть ли способ захватить указатель мыши так же, как работает утилита Apple screencapture? То, что я пытаюсь сделать, требует, чтобы я нарисовал чистое окно, которое не активирует мое приложение, а вместо этого перекрывает все, включая док-станцию. Единственное программное обеспечение, которое я видел, это снимок экрана с использованием команды + Shift+4.

Я попытался создать неактивирующий NSPanel, но он не работает с курсорами курсора, если мое приложение не активно (чего я не хочу). Также проблема с NSPanel заключается в том, что если я нахожусь в Dashboard, я не могу активировать окно на нем.

Требования к тому, что я пытаюсь сделать, таковы. • Мое приложение не должно активироваться (какое-либо активное приложение должно оставаться активным) • Должно быть в состоянии изменить 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 ответ

Решение

Оказывается, что использование CGEventTap и управление событиями мыши до того, как они распространяются на какое-либо приложение, работает. К сожалению, если у вас есть приложение для песочницы, вы не можете использовать CGEventTap. Кто-нибудь знает, есть ли способ получить такую ​​же функциональность с песочницей?

Другие вопросы по тегам