2015-10-27 48 views
0

我已根據這篇文章做了一個亮度換應用程序在Visual Studio中vb.net項目:Dream.In.Code

的應用程序完美的作品,但我儘管如此,他仍然陷入了一個局面,就像這個在文章中留下評論的人一樣。那傢伙沒有收到任何回覆,所以我決定在這裏發佈。閱讀(店)當前亮度AC/DC之前,我改變它

Screenshot of the guy's comment(如果你不能看到你可以參考報價如下圖)。

我使用這個在Vista家庭高級版機......就像在 我的應用程序一個夢想。

我可以在任何地方設置我的亮度介於0和100%。

雖然我在一個地方被卡住了,但我想在改變之前閱讀(並存儲)AC/DC的當前 亮度。這將允許我在應用程序結束時恢復亮度。

MSDN建議WMIMonitorBrightness類,但我不知道如何 使用它或我需要什麼導入。顯然, IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS功能在Vista過時, 等什麼選擇我呢?

我試圖以同樣的方式爲集展示使用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

這個例子很好的工作對我來說:

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 

或者,如果你更傾向於嚴格的開,進口微軟WMI腳本V1.2庫,然後:

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