如何在 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 上从我的应用程序中禁用推送通知声音?

如何在 Windows 7 上从 .Net 版本 2 升级到版本 4

获取 XP、Vista 和 7 的 windows 序列号