相关疑难解决方法(0)

如何在Windows窗体应用程序中检测Windows 10何时进入平板电脑模式?

更新

虽然不是最优雅的解决方案,但似乎有效的一种方法是观察相关的注册表值.这是使用WMI执行此操作的示例.如果有更好的解决方案,我会很高兴听到任何人的意见.

using System;
using System.Management;
using System.Security.Principal;
using System.Windows.Forms;
using Microsoft.Win32;

public partial class MainForm : Form
{
    public MainForm()
    {
        this.InitializeComponent();
        this.UpdateModeFromRegistry();

        var currentUser = WindowsIdentity.GetCurrent();
        if (currentUser != null && currentUser.User != null)
        {
            var wqlEventQuery = new EventQuery(string.Format(@"SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell' AND ValueName='TabletMode'", currentUser.User.Value));
            var managementEventWatcher = new ManagementEventWatcher(wqlEventQuery);
            managementEventWatcher.EventArrived += this.ManagementEventWatcher_EventArrived;
            managementEventWatcher.Start();
        }
    }

    private void ManagementEventWatcher_EventArrived(object sender, EventArrivedEventArgs e)
    {
        this.UpdateModeFromRegistry();
    }

    private void UpdateModeFromRegistry()
    {
        var tabletMode = (int)Registry.GetValue("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ImmersiveShell", …
Run Code Online (Sandbox Code Playgroud)

.net c# windows winforms windows-10

30
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

windows ×1

windows-10 ×1

winforms ×1