无法显示OSK

时间:2016-08-12 20:55:33

标签: c# wpf on-screen-keyboard

我正在尝试编写一个桌面应用程序,如果我点击某些按钮,OSK就会出现。我尝试使用以下代码调用它:

System.Diagnostics.Process.Start("osk.exe");

但每次都会显示以下错误:

"无法启动屏幕键盘"

为什么会这样?

更新

如果我将调试模式从任何CPU更改为64x,问题就解决了。但是我希望OSK在平板电脑模式下选择文本时自动显示,为什么还有办法让平板电脑模式OSK出现?

2 个答案:

答案 0 :(得分:2)

这是我使用System.Diagnostics.Process.Start(" osk.exe")开始使用OSK的经验。我只测试了Windows 7 64位和Windows 10 64位以及使用Visual Studio 2015.两个Windows版本的行为不同。

有三个相关的构建选项:

  1. 任何CPU,首选32位选中(默认):
  2. 在使用osk.exe的Windows 7上运行正常。

    在Windows 10上没有osk.exe,\ Windows \ System32 \ osk.exe或\ windows \ SysWOW64 \ osk.exe可用(可能是您的情况)。

    1. 任何CPU,首选32位未选中:
    2. 在使用osk.exe的Windows 7上运行正常。

      在Windows 10上,只有\ Windows \ System32 \ osk.exe可以正常工作。

      1. 64:
      2. 在Windows 10上,osk.exe和\ Windows \ System32 \ osk.exe可以正常工作。

        平台目标(任何CPU)和首选项32位的复选框位于“项目属性”,“构建”选项卡中。默认情况下,选中Prefer 32-bit(生成较小的可执行文件)。这意味着应用程序很可能在64位系统上以32位模式运行。在任务管理器中,您将在Windows 7上看到* 32,在Windows 10上看到(32位)。

        如果未经检查,应用程序将在64位系统上以64位模式运行并调用\ Windows \ System32 \ osk.exe将找到所需的一切。我还没有调查Windows 10中行为发生变化的原因,但最重要的是使用任何不带选择首选32位的CPU并指定OSK的完整路径,即\ Windows \ System32 \ osk.exe。

        \ Program Files \ Common Files \ Microsoft Shared \ ink \ TabTip.exe将启动TabTip。

答案 1 :(得分:0)

我发现了一个用于控制触摸键盘的未记录的COM接口。检查此处的代码https://stackoverflow.com/a/40921638/332528