簡體   English   中英

通過代碼在Windows 10上啟用Tablet模式?

[英]Enable Tablet Mode on Windows 10 through Code?

我已經閱讀了各種方法來了解如何檢測Windows 10設備是否處於平板電腦模式,最明顯的是下面的主題;

如何在Windows窗體應用程序中檢測Window 10何時進入平板電腦模式?

我想通過代碼(.Net C#)啟用/禁用平板電腦模式,但我找不到任何資源來實現這一點。 我已經嘗試更改注冊表項並發送已發生更改的HWND_BROADCAST,但這不會啟動對平板電腦模式的更改。

我也嘗試使用Spy ++風格的應用程序,但無法看到正在發送的消息。

是否存在執行此操作的方法?

在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), "Ptr", TabletModeController, "UInt", _TABLETMODESTATE, "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   

這里徘徊 - 您將需要關注用戶交互模式的示例。

注意:這適用於UWP(通用Windows平台),也稱為Windows 10+,如果您不僅僅針對Win 10,則需要其他版本Windows的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM