c# – 通过代码在Windows 10上启用Tablet模式?

我已经阅读了各种方法来了解如何检测 Windows 10设备是否处于平板电脑模式,最明显的是下面的主题;

How can I detect when Window 10 enters tablet mode in a Windows Forms application?

我想通过代码(.Net C#)启用/禁用平板电脑模式,但我找不到任何资源来实现这一目标.我已经尝试更改注册表项并发送一个已发生更改的HWND_BROADCAST,但这不会启动对平板电脑模式的更改.

我也尝试使用间谍风格的应用程序,但无法看到正在发送的消息.

是否存在执行此操作的方法

解决方法

在C#中没有真正的方法可以做到这一点.当然,您可以更改注册表项,但是您需要注销/启用以从平板电脑模式更改为平板电脑模式.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\TabletMode

启用:1或禁用0

由于我的问题是我的WPF-App在平板电脑模式启动时不会出现,我使用了AutoHotKey脚本.
您也可以创建.exe.
资料来源:https://autohotkey.com/boards/viewtopic.php?t=15619

#NoEnv
SetBatchLines -1
ListLines Off
#NoTrayIcon 


TABLETMODESTATE_DESKTOPMODE := 0x0
TABLETMODESTATE_TABLETMODE := 0x1

TabletModeController_GetMode(TabletModeController,ByRef mode) {
    return DllCall(NumGet(NumGet(TabletModeController+0),3*A_PtrSize),"Ptr",TabletModeController,"UInt*",mode)
}

TabletModeController_SetMode(TabletModeController,_TABLETMODESTATE,_TMCTRIGGER := 4) {
    return DllCall(NumGet(NumGet(TabletModeController+0),4*A_PtrSize),"UInt",_TMCTRIGGER)  
}

ImmersiveShell := ComObjCreate("{C2F03A33-21F5-47FA-B4BB-156362A2F239}","{00000000-0000-0000-C000-000000000046}")
TabletModeController := ComObjQuery(ImmersiveShell,"{4fda780a-acd2-41f7-b4f2-ebe674c9bf2a}","{4fda780a-acd2-41f7-b4f2-ebe674c9bf2a}")

if (TabletModeController_GetMode(TabletModeController,mode) == 0)
    TabletModeController_SetMode(TabletModeController,mode == TABLETMODESTATE_DESKTOPMODE ? TABLETMODESTATE_TABLETMODE : TABLETMODESTATE_DESKTOPMODE)

ObjRelease(TabletModeController),TabletModeController := 0
ObjRelease(ImmersiveShell),ImmersiveShell := 0 ; Can be freed after TabletModeController is created,instead

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...