Добавьте экран UAC для управления в C#

В Windows Vista и более поздних версиях Windows вы должны добавить экран UAC (контроль доступа пользователя) к кнопкам, запускающим процессы, требующие повышения привилегий. К сожалению, Microsoft не сделала это легко.

Добавление экрана к кнопке неудобно, но возможно. Метод AddShieldToButton, показанный в следующем коде, делает это, отправив сообщение BCM_SETSHIELD на кнопку. Обратите внимание, что кнопка должна иметь FlatStyle prperty, установленную в System, и она должна содержать текстовую подпись, даже если заголовок является одиночным пробелом.

К сожалению, Microsoft не предоставила никакого способа добавить экран к чему-либо, кроме кнопки, поэтому добавление его к другим вещам - это больше работы. Вы можете сделать изображение щита и просто добавить, что нужно, но внешний вид экрана изменяется в зависимости от системных настроек (например, обычного или большого размера шрифта) и может измениться в будущих версиях операционной системы.

Метод GetUacShieldImage, показанный в следующем коде, получает изображение экрана системы и возвращает его в растровое изображение, чтобы вы могли добавить его к пунктам меню, полям изображений и другим элементам управления, если это необходимо.

Этот метод делает кнопку с единственным пространством в качестве текста и использует метод AddShieldToButton, чтобы дать ему экран UAC. Затем он вызывает метод кнопки DrawToBitmap кнопки, чтобы заставить его рисовать на растровое изображение.

Далее код вырывается через растровое изображение, чтобы увидеть, где находится экранное изображение. Он пропускает те края, на которых расположены границы кнопки, и обнаруживает цвет фона для каждой горизонтальной строки пикселей в растровом изображении. По мере прохождения изображения он записывает самые большие и наименьшие координаты X и Y, которые не имеют этих цветов. Вот где щит. Код также преобразует фоновые пиксели в прозрачный цвет.

Наконец, код копирует экран в новый растровый рисунок, размер которого соответствует размеру и возвращает новое растровое изображение. Фоновые пиксели прозрачны, поэтому вы можете поместить экран над несогласованным фоном.

Следующий код показывает, как основная программа добавляет экраны UAC к кнопке , MenuItem и PictureBox.

Источник: http://csharphelper.com/blog/2015/09/add-a-uac-shield-to-controls-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *