在Windows 10和WPF中处理平板电脑模式键盘

时间:2018-11-28 14:59:45

标签: c# wpf windows touchscreen

我正在为Windows 10 LTSB 2016构建WPF应用程序。只有一个输入设备-触摸屏。我的大多数文本框都有自己的数字键盘(具有额外的功能),但是在某些情况下我想使用平板电脑模式键盘。有两种方法:

  1. 在“键入”设置中禁用全局TabetTip,并仅在需要时将其打开/关闭
  2. 防止在编辑大多数文本框时显示TabletTip

我更接近第一种方法,因为它不需要重写现有代码。我已经在尝试修改注册表,然后在每次与文本框的交互开始时广播SendNotifyMessage,但似乎每次都无法正常工作。

public static void DisableAutoKeyboard()
    {
        Process proc = new Process();
        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        proc.StartInfo.FileName = "reg.exe";
        proc.StartInfo.Arguments = @"add HKEY_CURRENT_USER\Software\Microsoft\TabletTip\1.7 /t REG_DWORD /v EnableDesktopModeAutoInvoke /d 0 /f";
        proc.Start();
        SendNotifyMessage((IntPtr)0xFFFF, 0x001A, (UIntPtr)0, (IntPtr)0);
    }
    [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern bool SendNotifyMessage(IntPtr hWnd, uint Msg, UIntPtr wParam, IntPtr lParam);

EnableAutoKeyboard()的参数中带有“ / d 1”。

可以更轻松地完成吗?

注意:我不想使用osk.exe而不是Windows 10 TabletTip

0 个答案:

没有答案