【发布时间】:2017-03-30 00:03:58
【问题描述】:
我正在使用以下代码来检测用户是否处于平板电脑模式。我在 Surface Pro 上,当我解耦键盘并将 PC 变成平板电脑时,IsTabletMode 返回 true(它应该返回 true。)当我使用“平板电脑模式”按钮而不解耦屏幕时,IsTabletMode 总是返回假。有没有人遇到过这种情况,我该如何解决?
/*
* Credit to Cheese Lover
* Retrieved From: http://stackoverflow.com/questions/31153664/how-can-i-detect-when-window-10-enters-tablet-mode-in-a-windows-forms-applicatio
*/
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;
}
}
【问题讨论】:
-
PC 是否在平板电脑模式下检测到键盘且键盘已连接? (我无法检查。)如果是这样,您应该能够根据键盘的存在添加逻辑。
-
PC 在平板电脑模式下会检测到键盘。我不想检测键盘是否存在,我希望将我的应用程序的主题与 Windows“平板电脑”主题相匹配。您知道更大的按钮等。键盘的存在与此无关。
-
您是否尝试过您已链接的答案问题中发布的“解决方案”?