How to get slate/laptop mode in 2-in-1 device?

  • 335
  • 0

How to get slate/laptop mode in 2-in-1 device?

            public const int WM_SETTINGCHANGE = 0x001A;
            protected override void WndProc(ref Message m)
            {
                try
                {
                    if (m.Msg == WM_SETTINGCHANGE)
                    {
                        Console.WriteLine(Marshal.PtrToStringUni(m.LParam));
                        if (Marshal.PtrToStringUni(m.LParam) == "ConvertibleSlateMode")
                        {
                            GetCONVERTIBLESLATEMODEStatus();
                        }
                    }
                }
                catch (Exception ex)
                {
                }

                base.WndProc(ref m);
            }



            private const int SM_CONVERTIBLESLATEMODE = 0x2003;
            [DllImport("user32")]
            internal static extern int GetSystemMetrics(int n);
            private string GetCONVERTIBLESLATEMODEStatus()
            {
                //http://msdn.microsoft.com/en-us/library/windows/desktop/ms724385(v=vs.85).aspx
                bool bSlateMode = (GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0);
                if (bSlateMode)
                    return "SlateMode";
                else
                    return "LaptopMode";
            }