我正在使用以下代码来检测用户是否处于平板电脑模式.我在Surface Pro上,当我解除键盘并将PC变成平板电脑时,IsTabletMode返回true(应该这样.)当我使用"平板电脑模式"按钮而不解耦屏幕时,IsTabletMode总是返回false.有没有人经历过这个,我该如何解决?
/*
* 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")] …Run Code Online (Sandbox Code Playgroud) 我有一小组大约90个用户非常重要,所以当这些商业客户中的一个或两个希望在他们的网络应用程序中更改UI时,他们通常会获得专用的开发资源.但是,对于我们来说,确切了解整个组织如何使用该应用程序非常重要,因为该组往往对其UI应该如何看起来具有强烈的个人观点,并且他们都以不同方式使用该应用程序.我在识别硬件和软键盘的使用方面遇到了最大麻烦.最理想的是,我正在寻找一个简单的答案,"使用新的Window.TabletMode == true!" 我不认为这个简单的答案存在.
window.orientation属性为肖像返回0,为横向视图返回90或-90.
结合window.innerHeight,我可以使用像......
var portrait;
$(window).on("orientationchange",function(event){
if (event.orientation == 0)
{
portrait = true;
}
else //if not, it's landscape
{
portrait = false;
}
});
Run Code Online (Sandbox Code Playgroud)
然后我将window.innerHeight结合使用的值portrait来确定宽高比是否看起来我打开了键盘.考虑到我相当狭窄的约束,这种方法确实可以全屏工作,但是如果浏览器不是全屏的呢?我确信还有很多其他理由不为此编写hacky比率计算.此外,我最大的愿望当然是使用任何浏览器和任何屏幕尺寸.
我可以处理的这些事情:我需要在加载文档时设置变量,并找出确定何时键入变得相关的方法.我可能需要检查一些浏览器功能.也许我会在有和没有硬件键盘的情况下增加计数器的输入.一旦我达到一定数量(比方说5次击键),我就会向我的数据跟踪端点发送一个POST请求,让它知道会话12345使用了软键盘(或硬键盘).之后,我将取消订阅事件处理程序.但是我工作的这部分不太受关注,因为我不认为我会陷入任何困境,但我不希望任何人花时间去美化或开发一个巨大的例子.
我已经阅读了各种方法来了解如何检测Windows 10设备是否处于平板电脑模式,最明显的是下面的主题;
如何在Windows窗体应用程序中检测Window 10何时进入平板电脑模式?
我想通过代码(.Net C#)启用/禁用平板电脑模式,但我找不到任何资源来实现这一点.我已经尝试更改注册表项并发送已发生更改的HWND_BROADCAST,但这不会启动对平板电脑模式的更改.
我也尝试使用Spy ++风格的应用程序,但无法看到正在发送的消息.
是否存在执行此操作的方法?
我在适用于Windows 10和Windows 10 Mobile的Universal App上工作.有谁知道如何检查Windows 10是否在平板电脑模式下运行?
我在这里找到了这个问题但是对于Windows窗体:我如何检测Window 10何时在Windows窗体应用程序中进入平板电脑模式?
谢谢
c# ×3
.net ×1
browser ×1
javascript ×1
keyboard ×1
tablet ×1
windows ×1
windows-10 ×1
winforms ×1