【问题标题】:How to bring up the Windows 8 on-screen keyboard in a desktop app如何在桌面应用程序中调出 Windows 8 屏幕键盘
【发布时间】:2012-08-08 22:17:38
【问题描述】:

我有一个全屏 DirectX 桌面应用程序,并且希望在用户点击我的游戏中的文本框时显示屏幕键盘。在全屏模式下有没有办法做到这一点?

【问题讨论】:

  • 有什么办法可以隐藏键盘吗?

标签: directx touch windows-8 multi-touch


【解决方案1】:

执行 osk.exe 会弹出更老式的屏幕键盘。 执行

会弹出 Windows 8 触摸键盘
C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe

我只是想通了,因为我正在开发一个全屏桌面应用程序,该应用程序在没有连接键盘的平板电脑上运行。

塞维林。

【讨论】:

  • 一直在寻找更好的方法,但这似乎是唯一可行的合理方法。
  • 你是如何隐藏它的?
【解决方案2】:

与 Severin Stampler 的答案相同,但为了从 c# 中找到正确的路径,我使用:

var path = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles) + @"\Microsoft Shared\ink\TabTip.exe";

if (!File.Exists(path))
{
   // older windows versions
   path = Environment.GetFolderPath(Environment.SpecialFolder.System) + @"\osk.exe";
}

【讨论】:

  • 运行 32 位应用程序时,在 64 位系统上找不到 TabTip.exe。 GetFolderPath 将为您提供“Program Files (x86)”文件夹,其中的 tabTip.exe 名为“TabTip32.exe”
【解决方案3】:

如果是桌面应用,您可能需要为osk.exe 调用ShellExecute

如果它是 Metro 应用程序,则您无法从应用程序本身调用 SIP。根据MSDN docs

这意味着应用程序不能以编程方式调用触摸 键盘通过焦点的操作。过去这里的大罪魁祸首 是网页——其中许多默认设置焦点在

【讨论】:

    【解决方案4】:

    您可以很容易地展示 Windows 8 触摸键盘:

    http://brianlagunas.com/showing-windows-8-touch-keyboard-wpf/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 2014-01-14
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      相关资源
      最近更新 更多