Скрыть курсор везде

Я использую C # и хочу скрыть курсор глобально. Я могу использовать Cursor.Hide (), чтобы скрыть курсор, когда он находится над моим приложением, но я хочу скрыть его полностью, независимо от того, где он находится. Это возможно?


person Joshua Walsh    schedule 11.02.2012    source источник
comment
да, это возможно, но это абсолютно плохая идея ... почему вы хотите это сделать?   -  person Yahia    schedule 11.02.2012
comment
Делаем скринсейвер с прозрачной формой. Мышь регистрируется как «над» формой, только если она находится на видимой части. Я хочу скрыть это, где бы он ни был.   -  person Joshua Walsh    schedule 11.02.2012
comment
Ах хорошо. Я следую этому руководству: ссылка, но это для заставки, которая заполняет весь экран, а не только его часть. (И уж тем более не полупрозрачная форма!)   -  person Joshua Walsh    schedule 11.02.2012
comment
Ух, Cursor.Hide отлично подходит для заставки, потому что с заставкой ваше приложение покрывает весь экран. Скрытие курсора, когда он находится над вашим приложением, - это именно то, что вам нужно.   -  person Cody Gray    schedule 11.02.2012
comment
@CodyGray, прочтите мой предыдущий комментарий. Я использую прозрачную форму. Cursor.Hide работает только с непрозрачными разделами формы. В большинстве случаев курсор не скрыт. Возможно, я мог бы переместить курсор в непрозрачную часть формы и оставить его там, но это кажется немного обходным решением.   -  person Joshua Walsh    schedule 11.02.2012
comment
@Yahia, есть ли что-нибудь в User32.dll, что я мог бы использовать? Раньше я пользовался HideCaret, есть ли что-то подобное?   -  person Joshua Walsh    schedule 11.02.2012
comment
Прозрачная форма - странная вещь для использования в качестве заставки. Весь смысл заставки в том, что она закрывает экран. Функция, которую вы бы использовали из user32.dll: ShowCursor < / a> (и передача FALSE в качестве параметра), что не совсем случайно вызывает метод Cursor.Hide.   -  person Cody Gray    schedule 11.02.2012
comment
@CodyGray, вы хотите опубликовать это как ответ, чтобы я мог отметить его как правильный? ;) Кроме того, некоторые заставки прозрачны (например, заставка Win7 Bubble или некоторые сторонние программы для разрушения экрана). У меня просто прозрачный анимированный логотип, телепортирующийся по экрану.   -  person Joshua Walsh    schedule 11.02.2012
comment
YoshieMaster: Сначала они делают снимок экрана и используют его для рисования. Они непрозрачны (в этом легко убедиться, запустив заставку, когда что-то еще движется по экрану).   -  person Joey    schedule 11.02.2012
comment
@Joey, я знал это, но зачем использовать снимок экрана, когда так легко использовать настоящую прозрачность? Это также позволяет мне видеть прогресс загрузки, не выходя из заставки.   -  person Joshua Walsh    schedule 11.02.2012
comment
Вы вдруг думаете, что это ответ на ваш вопрос? В части ответа говорится, что нужно вызвать Cursor.Hide, что я и предлагал в моем предыдущем комментарии, и вы отклонили его как неработающее. И нет, эти другие заставки непрозрачны. Они рисуют поверх всего, что в данный момент отображается на экране в момент активации заставки. По сути, они перерисовывают текущее содержимое экрана на изображение, а затем рисуют поверх этого изображения. Есть очень веские причины не использовать прозрачность, их слишком много, чтобы объяснить их в комментариях.   -  person Cody Gray    schedule 12.02.2012
comment
Я повторю то, что я сказал ранее. Cursor.Hide скрывает курсор только тогда, когда он находится над непрозрачной (непрозрачной) частью экрана. Я предполагаю, что ShowCursor скроет его, где бы он ни находился. Я скоро это проверю. Что касается непрозрачности, я цитирую себя: @Joey, я знал это, но зачем использовать снимок экрана, когда так легко использовать настоящую прозрачность? Это также позволяет мне видеть прогресс загрузки, не выходя из заставки.   -  person Joshua Walsh    schedule 13.02.2012
comment
Ваше предположение неверно. Я хотел сказать, что Cursor.Hide на самом деле вызывает ShowCursor функцию. Если первое не сработает, то второе не сработает. Они идентичны. Он уже P / вызвал для вас функцию ShowCursor. Самостоятельное выполнение этого не поможет. И нет, использовать настоящую прозрачность непросто. Вы не первый, кто мог подумать об этом. Есть причина, по которой все остальные делают это так, как они это делают.   -  person Cody Gray    schedule 13.02.2012
comment
@CodyGray, нет ничего плохого в том, чтобы решить проблему иначе. У моего пути есть преимущества, которые мне нравятся. Мой способ также проще реализовать. Я возьму на себя любые проблемы, связанные с этим. Яхия сказал, что это возможно, но они просто не сказали мне, потому что думали, что я использую это в гнусных целях. Это не может быть так.   -  person Joshua Walsh    schedule 13.02.2012
comment
@Yahia, я еще не понял этого, вы сказали, что это возможно. Вы знаете, как это сделать?   -  person Joshua Walsh    schedule 13.02.2012
comment
Я сказал, что это возможно, НО что это очень плохая идея - это имелось в виду технически, И я не передумал по этому поводу ... поэтому я настоятельно рекомендую следовать совету @CodyGray, сделав снимок экрана при активации заставки так далее. !   -  person Yahia    schedule 13.02.2012


Ответы (1)


Я предполагаю, что вы находитесь в WPF. Вы можете использовать:

Mouse.OverrideCursor = Cursors.None;

чтобы получить прозрачный курсор для всего приложения.

person Nicolas Voron    schedule 08.08.2013