ovládání zvuku a jasu   zodpovězená otázka

VB.NET, WinAPI

Dobrý den mám dvě otázky.

1. Potřebuju se dostat k ovládání zvuku ve windows, ale přímo k tomu hlavnímu, abych mohl ovládat zvuk celkově.

2. Zajímalo by mě jestli nějak můžu ovládat jas obrazovky.

Za jakoukoliv odpověď děkuji.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Dobrý den, mám jednu otázku.

1. Co jste pro to udělal, než jsem napsal sem na fórum?

Za upřímnou odpověď děkuji.

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

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.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Moc děkuju obzvlášť za to ovládání jasu to mi hodně pomohlo. Ovládání zvuku sem nakonec našel přímo pro VB.NET.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback