Is it possible to adjust monitor screen brightness [usually do via [fn]+F7/F8] via VB.NET?
If so how?
:duck:
Printable View
Is it possible to adjust monitor screen brightness [usually do via [fn]+F7/F8] via VB.NET?
If so how?
:duck:
Hey,
From a quick google search, I believe this is possible using:
http://pinvoke.net/default.aspx/gdi3...GammaRamp.html
Here is an article about it:
http://www.nirsoft.net/vc/change_screen_brightness.html
Hope that helps!!
Gary
Hmm, not very straight forward. I was thinking about a function where I can pass RGB values/intensity temperature to get it adjusted.
Hey,
There is nothing to drop you wrapping the API call into a function, so it literally would be as simple as passing an RGB value into it.
Gary
Found easier alternative code here. :)
http://driveactivated.com/projects/p...ta-gadget.aspx
Can anyone help me converting the C# to VB.NET?
My VB code looks like this - but not working :sick: Giving me error in InvokeMethod call. Second argument should be an array but I can't figure out how.Code:static void SetBrightness(byte targetBrightness)
{
//define scope (namespace)
System.Management.ManagementScope x = new System.Management.ManagementScope("root\\WMI");
//define query
System.Management.SelectQuery q = new System.Management.SelectQuery("WmiMonitorBrightnessMethods");
//output current brightness
System.Management.ManagementObjectSearcher mox = new System.Management.ManagementObjectSearcher(x, q);
System.Management.ManagementObjectCollection mok = mox.Get();
foreach (System.Management.ManagementObject o in mok)
{
o.InvokeMethod("WmiSetBrightness", new Object[] { UInt32.MaxValue, targetBrightness }); //note the reversed order - won't work otherwise!
break; //only work on the first object
}
mox.Dispose();
mok.Dispose();
}
Can't really understand how to pass the value of brightness in my Sub procedure. The C# code seem to pass as byte instead of number.Code:Public Sub SetBrightness(ByVal v As Integer)
Dim curBrightness As Integer = 0
Dim x As New System.Management.ManagementScope("root\WMI")
Dim q As New System.Management.SelectQuery("WmiMonitorBrightness")
Dim mox As New System.Management.ManagementObjectSearcher(x, q)
Dim mok As System.Management.ManagementObjectCollection
Dim o As System.Management.ManagementObject
mok = mox.Get()
Dim p As Byte
p = v.Parse(Int(v))
For Each o In mok
o.InvokeMethod("WmiSetBrightness", p)
Exit For
Next
mox.Dispose()
mok.Dispose()
End Sub
Hey,
In the C# code you have this:
and in the VB code you have created you have this:Code:o.InvokeMethod("WmiSetBrightness", new Object[] { UInt32.MaxValue, targetBrightness });
Where p is a Byte.Code:o.InvokeMethod("WmiSetBrightness", p)
The original code is looking for an object array, so you will have to match the parameters that you are passing in.
Gary
Well that's the problem! Google search shows VB.NET doesn't support UInt32.MaxValue. So, how do I actually pass it over the function?
Hey,
This would tend to disagree with that:
http://msdn.microsoft.com/en-us/libr....maxvalue.aspx
Gary
Here is how to do it in C#.Net : http://mycomponent.blogspot.com/2009...ness-in-c.html:wave::D