Как написать приложение для OS X, которое может повлиять на изменения (пользовательский курсор, нарисовать изображение), даже если оно не активно? - PullRequest
2 голосов
/ 08 августа 2011

Ранее я задавал вопрос об изменении курсора в масштабе всей системы на OSX.Я использовал NSCursor для изменения курсора, но эффекты действуют только до тех пор, пока приложение активно.Когда другое приложение становится активным, пользовательский курсор теряется.

Вот связанный, более общий вопрос.Как вы можете написать приложение, чтобы иметь эффекты системной жены?Например, рисование изображения на экране, даже если ваше приложение не активно, а что-то еще есть?

Я понимаю, что мне, вероятно, нужно перейти на более низкий уровень, чем API-интерфейсы Какао.Я просто не могу понять, с чего начать искать?Какие-нибудь конкретные API-интерфейсы Carbon, на которые мне нужно обратить внимание?Или даже ниже?

Любые указатели будут оценены!Если вы точно знаете, как изменить курсор в масштабе всей системы или как нарисовать изображение и переместить его (независимо от того, какое приложение активно), это решило бы и мою текущую проблему!Могу ли я написать приложение, которое может достичь этого, когда оно установлено в системе?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Вы можете добиться желаемого эффекта, но не так, как вы думаете.

Вы говорите,

Я пишу приложение для поддержки презентаций, которое программно показывает эквивалент "лазерной указки" на экране. Моей первой идеей было использование самого курсора мыши в качестве указателя и изменение его внешнего вида в виде красного круга.

Тогда притворяйся. Создайте приложение, возможно, типа LSUIElement, возможно, нет, в зависимости от желаемого поведения. Создайте окно без полей (введите NSBorderlessWindowMask) и залейте его чистым цветом. Установите его уровень окна достаточно высоко, чтобы он плавал над всем (используя -[NSWindow setLevel:], хотя я не могу придумать, какой лучший уровень был бы вне руки), и нарисуйте его.

Это правда, что вы не можете установить курсор, когда вы не главное приложение. Это правда, что вы не можете просто писать на экране. Но вы можете получить те же эффекты, если вы умны.

0 голосов
/ 16 августа 2011

Это поведение не предоставляется никакими API в Mac OS X. Вам необходимо изменить файлы ресурсов в ОС, и это очень опасная операция, которая может привести к повреждению целевого компьютера. Вы должны знать, что вы делаете.

Вы пытаетесь реализовать приложение для создания тем или что-то в этом роде? Какова твоя цель? Если вы сообщите нам, что вы пытаетесь сделать, мы можем предложить альтернативные подходы.

...