如何使用 C++ 调出屏幕键盘在 Windows 7 平板设备中?
我正在开发适用于 Windows 7 设备的应用程序,并且正在使用嵌入式 Web 浏览器 (webkit)。通常,触摸平板设备上的编辑控件会出现一个小键盘图标。但是,由于我的编辑控件位于浏览器中,因此它不是带有 hwnd 的真实窗口,并且 Window 不会显示您可以单击以显示屏幕键盘的图标。
当焦点转到编辑控件时,是否可以使用 API 来使小键盘图标正常显示?
- 我尝试搜索MSDN,但没有成功。
- 我查看了 Windows 键盘 API。没有骰子。
- 我尝试运行 OSK.exe。这可能会调出键盘的多个实例,但它很草率。我希望获得与用户点击 Windows 编辑控件时获得的相同效果,以便 UI 保持一致。
必须有一个 API 可以在屏幕键盘上显示该内容。
谢谢。
大卫
I am developing an application for Windows 7 devices and I'm using an embedded web browser (webkit). Normally touching an edit control on a tablet device causes a little keyboard icon to appear. However, since my edit control is in the browser, it's not a real window with an hwnd and Window's doesn't bring up the icon you can click on to bring up the on screen keyboard.
Is there an API I can use to cause the little keyboard icon to appear as it normally would when focus goes to an edit control?
- I tried searching MSDN, no success.
- I looked at the Windows keyboard API. No dice.
- I tried running OSK.exe. This could bring up multiple instances of the keyboard and it's just sloppy. I want to get the same effect a user would get when tapping a windows edit control so the UI is consistent.
There must be an API that can bring up that on screen keyboard.
Thanks.
David
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定您是否已经回答了这个问题。我一直在考虑做类似的事情,尽管它是一个更大的应用程序的一部分,并且很少使用键盘(但仍然必须支持)。我分配了一个快捷键(右键单击屏幕键盘应用程序上的 Win 7,然后选择“属性”。在快捷方式选项卡中,分配您想要的任何快捷方式)。当我触摸 SurfaceTextEdit 控件时,我使用 SendInput() 从 C++ 代码模拟快捷键。我知道这是一种黑客攻击,但它对我来说效果很好,因为我很少在应用程序中使用屏幕键盘。
Not sure if you have this answered already. I have been looking at doing a similar thing although it is a part of a larger application and the keyboard is rarely used (but nevertheless had to be supported). I assigned a shortcut key (right click Win 7 on screen keyboard application and choose Properties. In the shortcut tab, assign any shortcut you'd like). When I touch a SurfaceTextEdit control, I emulate the shortcut key from my C++ code using SendInput(). I know this is a hack, but it worked well for me because I rarely used the onscreen keyboard in my application.