要以编程方式设置显示亮度,我有两个选项:
PowerWriteACValueIndex和PowerWriteDCValueIndex API现在,我两者都试过了,都给了我同样的(奇怪的)结果。下面是我使用的代码:
With psiInfo
.FileName = "powercfg"
.UseShellExecute = True
.WindowStyle = ProcessWindowStyle.Hidden
.Arguments = "-setacvalueindex " & guidCurScheme.ToString() & " " & SUBGROUP_GUID.GUID_VIDEO_SUBGROUP & " " & SETTING_GUID.GUID_DISPBRIGHTNESS & " " & psValue.ValueAC
End With
pProc = Process.Start(psiInfo)其中:
Public Const GUID_VIDEO_SUBGROUP As String = "7516b95f-f776-4464-8c53-06167f40cc99"
Public Const GUID_DISPBRIGHTNESS As String = "aded5e82-b909-4619-9949-f5d71dac0bcb"
Public Structure POWERSETTING
Public ValueAC As String
Public ValueDC As String
End Structure
Dim psValue As POWERSETTINGguidCurScheme是PowerGetActiveScheme API函数返回的有功功率方案的GUID。我用"-setdcvalueindex“对DC部分进行保护。
现在,奇怪的行为如下:
这完全出乎意料,我不知道我做错了什么。当我使用Windows中的PowerWriteACValueIndex和PowerWriteDCValueIndex函数时,它提供了完全相同的结果。
发布于 2015-07-17 06:48:51
也许,通过让应用程序将字符串复制到剪贴板上,可以再次检查参数的语法。有时候只是一个小小的错误给我毁了。
此外,我还会检查被调用的应用程序是来自syswow还是来自system32 (这取决于您如何编译应用程序),您也可以检查现有代码或查看所获得的错误输出。可以这样捕获错误输出:
Dim so As System.IO.StreamReader
Dim se As System.IO.StreamReader
se = myproc.StandardError
so = myproc.StandardOutput
myproc.WaitForExit()
MsgBox(so.ReadToEnd & vbcrlf & se.ReadToEnd)https://stackoverflow.com/questions/31465684
复制相似问题