我正在尝试编写一个桌面应用程序,如果我点击某些按钮,OSK就会出现。我尝试使用以下代码调用它:
System.Diagnostics.Process.Start("osk.exe");
但每次都会显示以下错误:
"无法启动屏幕键盘"
为什么会这样?
更新
如果我将调试模式从任何CPU更改为64x,问题就解决了。但是我希望OSK在平板电脑模式下选择文本时自动显示,为什么还有办法让平板电脑模式OSK出现?
答案 0 :(得分:2)
这是我使用System.Diagnostics.Process.Start(" osk.exe")开始使用OSK的经验。我只测试了Windows 7 64位和Windows 10 64位以及使用Visual Studio 2015.两个Windows版本的行为不同。
有三个相关的构建选项:
在使用osk.exe的Windows 7上运行正常。
在Windows 10上没有osk.exe,\ Windows \ System32 \ osk.exe或\ windows \ SysWOW64 \ osk.exe可用(可能是您的情况)。
在使用osk.exe的Windows 7上运行正常。
在Windows 10上,只有\ Windows \ System32 \ osk.exe可以正常工作。
在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