Изменяем яркость монитора через Visual Basic 2010⁠⁠

Пишу программу, которая должна предупреждать пользователя, когда понижается заряд аккумулятора. И кроме предупреждения, она должна понижать яркость монитора, чтобы этот заряд экономить. Еле нашёл библиотеку для изменения яркости. Это System.Management.dll (не нажимайте на ссылку, это какой-то сайт с доменом system.management). Ну а с кодом всё уже проще, он должен быть такой:


Imports System.Management
Namespace SBrightness
Class Brightness
Shared windowsbegunok As String = "00"
Dim b As Byte = 100
Shared Sub LockWindowsBrightnessFunction()
windowsbegunok = "00"
Dim currentBrightness As Integer = GetBrightness()
start:
If windowsbegunok = "0" Then Exit Sub
While currentBrightness = GetBrightness()
System.Threading.Thread.Sleep(500)
End While
If Not windowsbegunok.EndsWith("1") Then
SetBrightness(currentBrightness)
End If
If windowsbegunok = "0" Then Exit Sub
GoTo start
End Sub
Shared Sub UnlockWindowsBrightnessFunction()
windowsbegunok = "0"
End Sub
Shared Function GetBrightness() As Integer
Dim s As New System.Management.ManagementScope("root\WMI")
Dim q As New System.Management.SelectQuery("WmiMonitorBrightness")
Dim mos As New System.Management.ManagementObjectSearcher(s, q)
Dim moc As System.Management.ManagementObjectCollection = mos.[Get]()
Dim curBrightness As Byte = 0
For Each o As System.Management.ManagementObject In moc
curBrightness = CType(o.GetPropertyValue("CurrentBrightness"), Byte)
Exit For
Next
moc.Dispose()
mos.Dispose()
Return CType(curBrightness, Integer)
End Function
Shared Sub SetBrightness(ByVal targetBrightness As Byte)
Dim s As New System.Management.ManagementScope("root\WMI")
Dim q As New System.Management.SelectQuery("WmiMonitorBrightnessMethods")
Dim mos As New System.Management.ManagementObjectSearcher(s, q)
Dim moc As System.Management.ManagementObjectCollection = mos.[Get]()
For Each o As System.Management.ManagementObject In moc
o.InvokeMethod("WmiSetBrightness", New [Object]() {UInt32.MaxValue, targetBrightness})
Exit For
Next
moc.Dispose()
mos.Dispose()
windowsbegunok &= "1"
System.Threading.Thread.Sleep(500)
windowsbegunok &= "2"
End Sub
End Class
Class BrightnessRandom
Shared Property MaxRandomBrightness As Byte = 100
Shared Property MinRandomBrightness As Byte = 1
Shared Sub SetRandomBrightness()
Dim randomGenerator As New Random
Dim i As Integer
i = randomGenerator.Next(MinRandomBrightness, MaxRandomBrightness)
Brightness.SetBrightness(i)
End Sub
End Class
End Namespace

Длинный, но что поделаешь. Это процедуры. А вот их вызов:


SBrightness.Brightness.SetBrightness(15)

И это работает, я проверил!


Кстати, вот видео:

0
Автор поста оценил этот комментарий

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества