关于windows10下如何检测系统现在是否为平板模式。

啊啊啊啊啊,还是由于“特殊项目”的需要,需要对平板是否在平板模式下工作进行判断。一开始也是找到一个方案,就是这个
public static class TabletPCSupport
{
private static readonly int SM_CONVERTIBLESLATEMODE = 0x2003;
private static readonly int SM_TABLETPC = 0x56;

private Boolean isTabletPC = false;

public Boolean SupportsTabletMode { get { return isTabletPC; }}

public Boolean IsTabletMode
{
get
{
return QueryTabletMode();
}
}

static TabletPCSupport ()
{
isTabletPC = (GetSystemMetrics(SM_TABLETPC) != 0);
}

[DllImport(“user32.dll”, SetLastError = true, CharSet = CharSet.Auto, EntryPoint = “GetSystemMetrics”)]
private static extern int GetSystemMetrics (int nIndex);

private static Boolean QueryTabletMode ()
{
int state = GetSystemMetrics(SM_CONVERTIBLESLATEMODE);
return (state == 0) && isTabletPC;
}
}
可能已经有兄弟姐妹使用过,但这个不好用。于是又找到了一个方案,直接贴出代码来:
private void UpdateModeFromRegistry()
{
var tabletMode = (int)Registry.GetValue(“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell”, “TabletMode”, 0);
if (tabletMode == 1)
{
Console.Write(@“Tablet mode is enabled”);
}
else
{
Console.Write(@“Tablet mode is disabled”);
}
}
这个就好用不少,它是直接根据注册表项里的数值来判断系统现在是平板模式还是PC模式。
Besides,第一个方案里判断PC是否支持平板模式好像也不甚好用。还是推荐方案二。

你可能感兴趣的:(C#,WPF)