Příště se prosím pokuste dotaz položit pořádně, fórum má jistá pravidla, jazyk taktéž (otázky končívají otazník například). Komponenta pro ovládání jasu - nezkoušel jsem, zkonvertujte si do VB .NET a přidejte do kódu nově vytvořené komponenty:
public partial class ScreenBrightness : Component
{
[DllImport("gdi32.dll")]
public static extern bool SetDeviceGammaRamp(IntPtr hDC, ref RAMP lpRamp);
RAMP ramp = new RAMP();
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct RAMP
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Red;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Green;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public UInt16[] Blue;
}
int _gammaValue;
public ScreenBrightness()
{
InitializeComponent();
}
public ScreenBrightness(IContainer container)
{
container.Add(this);
InitializeComponent();
}
[Description("Brightness Gamma Value")]
[Category("Brightness")]
public int SetGammaValue
{
get
{
return _gammaValue;
}
set
{
_gammaValue = value;
}
}
/// <summary>
/// Apply the selected gamma value to screen
/// </summary>
public void ApplyGamma()
{
// since gamma value is max 44 ,, we need to take the percentage from this because
// it needed from 0 - 100%
double gValue = _gammaValue;
gValue = Math.Floor(Convert.ToDouble((gValue / 2.27)));
_gammaValue = Convert.ToInt16(gValue);
if(_gammaValue!=0)
{
ramp.Red = new ushort[256];
ramp.Green = new ushort[256];
ramp.Blue = new ushort[256];
for (int i = 1; i < 256; i++)
{
// gamma is a value between 3 and 44
ramp.Red[i] = ramp.Green[i] = ramp.Blue[i] = (ushort)(Math.Min(65535, Math.Max(0, Math.Pow((i + 1) / 256.0, (_gammaValue + 5) * 0.1) * 65535 + 0.5)));
}
SetDeviceGammaRamp(GetDC(IntPtr.Zero), ref ramp);
}
}
}
Jako další řešení se nabízí Windows API (pomocí P/Invoke) funkce DeviceIoControl, kde do parametru dwControlCode dosadíte hodnotu IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS. Celé je to zpracované jako projekt zde: http://mycomponent.blogspot.com/2009/05/... Ovládání hlasitostí se dá řešit přes DirectX nebo WINMM (dost zastaralá metoda), demonstrace pomocí WinMM třeba zde: http://www.codeproject.com/KB/audio-vide... a zde: http://www.dreamincode.net/forums/topic/... Vše je v C# takže si to budete muset přepsat nebo překonvertovat, ale vy chcete z obojího jen jednu funkci, takže pokud mohu, doporučil bych Vám si kýžený kus kódu přepsat ručně, čímž to dostanete do krve lépe a budete vědět co která část dělá/zahrnete jen to, co potřebujete, abyste nemusel zahrnovat celé ty projekty.
|