Какао - захват мыши, как утилита захвата экрана
Я пытаюсь найти ответ на тему, которая сводит меня с ума. Есть ли способ захватить указатель мыши так же, как работает утилита 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. Кто-нибудь знает, есть ли способ получить такую же функциональность с песочницей?