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";
}