在我更改之前,读取(并存储)AC / DC的当前亮度

时间:2015-10-27 07:52:40

标签: vb.net

我已经在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操作系统

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