Изменяем яркость монитора через 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)
И это работает, я проверил!
Кстати, вот видео:
Статья на сайте: https://gscbook.ru/change_brightness_with_visual_basic_2010/