我已经在Visual Studio中使用基于本文的vb.net项目制作了Brightness Changer应用程序:Dream.In.Code
该应用程序运行良好,但我卡在一个位置,就像这个人在文章中留下评论。这家伙没有得到回复,所以我决定在这里发帖。
Screenshot of the guy's comment(如果您无法看到图片,可以参考下面的报价。)
我在Vista家庭高级计算机上使用它...就像一个梦想 我的应用。
我可以将亮度设置在0到100%之间。
我被困在一个地方,我想读(并存储)当前 在更改之前AC / DC的亮度。这将允许我恢复 应用程序结束时的亮度。
MSDN建议WMIMonitorBrightness类,但我不知道如何 使用它或我需要的进口。显然是 IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS函数在Vista中已弃用, 那么我有什么选择?
我尝试以与SET显示相同的方式使用QUERY_DISPLAY,但得到了 坚持形成
DeviceIoControl(pDisplay, IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS, _ Brightness, Marshal.SizeOf(Brightness), IntPtr.Zero, 0, Nothing, IntPtr.Zero) line
我在哪里可以获得中的& H号码Const IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS As Integer =
请帮助。向我展示如何从IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS或WMIMonitorBrightness中提取数据。现在只有Vista的应用程序很好......但我想最终将它扩展到XP。〜马修
PS:我使用的是Windows 8.1操作系统
答案 0 :(得分:0)
这个例子对我很有用:
http://www.activexperts.com/admin/scripts/wmiscripts/vbscript/0067/
在.Net中它几乎是一样的:
Dim objWMIService As Object = GetObject("winmgmts:\\.\root\WMI")
Dim colItems As Object = objWMIService.ExecQuery("Select * From WmiMonitorBrightness")
For Each objItem As Object In colItems
Debug.Print("Active:" & objItem.Active)
Debug.Print("CurrentBrightness:" & objItem.CurrentBrightness)
Debug.Print("InstanceName:" & objItem.InstanceName)
Debug.Print("Level:" & Join(objItem.Level))
Debug.Print("Levels:" & objItem.Levels)
Debug.Print("")
Debug.Print("########")
Debug.Print("")
Next
或者,如果您更喜欢Strict On,请导入Microsoft WMI Scripting V1.2 Library,然后:
Dim objWMIService As WbemScripting.SWbemServicesEx = DirectCast(GetObject("winmgmts:\\.\root\WMI"), WbemScripting.SWbemServicesEx)
Dim colItems As WbemScripting.SWbemObjectSet = objWMIService.ExecQuery("Select * From WmiMonitorBrightness")
For Each objItem As WbemScripting.SWbemObject In colItems
Debug.Print("Active:" & objItem.Properties_.Item("Active").Value.ToString)
Debug.Print("CurrentBrightness:" & objItem.Properties_.Item("CurrentBrightness").Value.ToString)
Debug.Print("InstanceName: " & objItem.Properties_.Item("InstanceName").Value.ToString)
Debug.Print("Level:" & Join(DirectCast(objItem.Properties_.Item("Level").Value, Object())))
Debug.Print("Levels: " & objItem.Properties_.Item("Levels").Value.ToString)
Debug.Print("")
Debug.Print("########")
Debug.Print("")
Next