c# – 通过代码在Windows 10上启用Tablet模式?
发布时间:2020-12-15 08:01:52 所属栏目:百科 来源:网络整理
导读:我已经阅读了各种方法来了解如何检测 Windows 10设备是否处于平板电脑模式,最明显的是下面的主题; How can I detect when Window 10 enters tablet mode in a Windows Forms application? 我想通过代码(.Net C#)启用/禁用平板电脑模式,但我找不到任何资源来
我已经阅读了各种方法来了解如何检测
Windows 10设备是否处于平板电脑模式,最明显的是下面的主题;
How can I detect when Window 10 enters tablet mode in a Windows Forms application? 我想通过代码(.Net C#)启用/禁用平板电脑模式,但我找不到任何资源来实现这一目标.我已经尝试更改注册表项并发送一个已发生更改的HWND_BROADCAST,但这不会启动对平板电脑模式的更改. 我也尝试使用间谍风格的应用程序,但无法看到正在发送的消息. 是否存在执行此操作的方法? 解决方法
在C#中没有真正的方法可以做到这一点.当然,您可以更改注册表项,但是您需要注销/启用以从平板电脑模式更改为平板电脑模式.
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionImmersiveShellTabletMode 启用:1或禁用0 由于我的问题是我的WPF-App在平板电脑模式启动时不会出现,我使用了AutoHotKey脚本. #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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |