如何在 Vista 和 Windows 7 上从我的应用程序启动屏幕键盘
Posted
技术标签:
【中文标题】如何在 Vista 和 Windows 7 上从我的应用程序启动屏幕键盘【英文标题】:How can I launch the on-screen keyboard from my application on Vista and Windows 7 【发布时间】:2009-02-17 13:55:06 【问题描述】:我有一个问题,我有一个应用程序,它有一个工具栏图标来启动系统屏幕键盘。除了 Windows Vista 和 Windows 7 beta 之外,这一切都可以正常工作。 UAC 似乎妨碍了 osk.exe 运行。
我已经读过,因为它在登录屏幕上使用它不会提示用户进行身份验证。如果我关闭 UAC,它可以工作,但这不是一个选项,因为客户希望它开箱即用。
我能做些什么来解决这个问题吗?
【问题讨论】:
在登录屏幕上使用它是什么意思?您的应用程序在登录前运行? 我想说 osk 在与 UAC 的交互方面是独一无二的,因此我无法从我的应用程序(这是一个标准的桌面应用程序)启动它。 【参考方案1】:好的,结果更多的是关于细节。
我使用的是 Qt 的 QProcess::startDetached,我相信它使用了 Windows 上的 CreateProcess 函数调用。
我更改了代码以使用 ShellExecute() 函数调用,它就像一个魅力。
奇怪的是……
【讨论】:
作为更新,启动 osk.exe 被我的用户报告为损坏。结果是那些在 Windows 7 64bit 上的用户由于 WowRedirector 无法启动键盘:***.com/questions/509989/… 如果您将调用 startDetached 或 openUrl 与调用::Wow64DisableWow64FsRedirection
和 ::Wow64RevertWow64FsRedirection
包装在一起,就像他们在此处的示例中所做的那样 msdn.microsoft.com/en-us/library/windows/desktop/… 它应该可以在没有 ShellExecute()
的情况下正常工作。跨度>
【参考方案2】:
是否有可能尝试实现您自己的 OSK,使其以与您的应用程序相同的权限运行?
【讨论】:
我真的不想重新发明***,再加上本地化的键盘是必需的,20 种布局将是一个皇家痛苦。以上是关于如何在 Vista 和 Windows 7 上从我的应用程序启动屏幕键盘的主要内容,如果未能解决你的问题,请参考以下文章
如何使我的程序在 Windows Vista 和 Windows 7 中运行?
我如何在 Windows(xp、vista、7)欢迎屏幕或锁定屏幕(如 VNC 或 Dame Ware)中进行交互
作为开发人员,我应该如何使用 Windows Vista(和 Windows 7)中的特殊文件夹?
是否可以在 iOS 7 上从我的应用程序中禁用推送通知声音?