[상단] C# WINCE 화면 밝기 조절

2869 단어 WinCE
wince에 화면 밝기 값 저장 레지스트리 HKEYCURRENT_USER\ControlPanel\\Backlight\Brightness에서 값의 범위는 0-100이기 때문에 화면의 밝기를 바꾸려면 이 값을 바꾸고 다시 불러오면 코드는 다음과 같습니다.
 
/// <summary>

    ///        

    /// </summary>

    public class SetBackLight

    {

        public static void SetBright(string strValue)

        {

            SetBackLightValue(strValue);

            ReloadBackLight();

        }

        public static int GetBacklightValue()

        {

            RegistryKey CUser = Registry.CurrentUser;

            RegistryKey Backlight = CUser.OpenSubKey("ControlPanel\\Backlight", true);

            return (int)Backlight.GetValue("Brightness", RegistryValueKind.DWord);

        }

        public static void SetBackLightValue(string strValue)

        {

            try

            {

                 

                RegistryKey hkcu = Registry.CurrentUser;

                RegistryKey Backlight = hkcu.OpenSubKey("ControlPanel\\Backlight", true);

                Backlight.SetValue("Brightness", strValue, RegistryValueKind.DWord);

            }

            catch (Exception ex)

            {

                System.Diagnostics.Debug.WriteLine(ex.Message);

            }

        }





        public static bool ReloadBackLight()

        {

          

            bool ret = false;

            IntPtr scanEvent = NativeWin.CreateEvent(IntPtr.Zero, false, false, "BackLightChangeEvent");

            if (scanEvent == null)

            {

                throw new Exception("CreateEvent  ");

            }

            else

            {

                NativeWin.EventModify(scanEvent, EventFlags.SET);

                NativeWin.CloseHandle(scanEvent);

                ret = true;

            }

            return ret;

        }





        partial class NativeWin

        {

            [DllImport("coredll.dll", SetLastError = true, CharSet = CharSet.Auto)]

            internal static extern IntPtr CreateEvent(IntPtr lpEventAttributes, [In, MarshalAs(UnmanagedType.Bool)] bool bManualReset, [In, MarshalAs(UnmanagedType.Bool)] bool bIntialState, [In, MarshalAs(UnmanagedType.BStr)] string lpName);





            [DllImport("coredll.dll", SetLastError = true, CharSet = CharSet.Auto)]

            [return: MarshalAs(UnmanagedType.Bool)]

            internal static extern bool CloseHandle(IntPtr hObject);





            [DllImport("coredll.dll", SetLastError = true)]

            [return: MarshalAs(UnmanagedType.Bool)]

            internal static extern bool EventModify(IntPtr hEvent, [In, MarshalAs(UnmanagedType.U4)] EventFlags dEvent);

        }





        enum EventFlags : int

        {

            PULSE = 1,

            RESET = 2,

            SET = 3

        }





    }

 

좋은 웹페이지 즐겨찾기