C++ 如何从Vista和Windows 7上的应用程序启动屏幕键盘
我有一个问题,我有一个应用程序,它有一个工具栏图标来启动屏幕键盘上的系统。除了WindowsVista和Windows7Beta之外,所有这些都可以正常工作。UAC似乎在妨碍osk.exe的运行 我已经读到,因为它是在登录屏幕上使用的,它不会提示用户进行身份验证。如果我关闭UAC,它可以工作,但是这不是一个选项,因为客户希望它开箱即用C++ 如何从Vista和Windows 7上的应用程序启动屏幕键盘,c++,qt,visual-c++,keyboard,uac,C++,Qt,Visual C++,Keyboard,Uac,我有一个问题,我有一个应用程序,它有一个工具栏图标来启动屏幕键盘上的系统。除了WindowsVista和Windows7Beta之外,所有这些都可以正常工作。UAC似乎在妨碍osk.exe的运行 我已经读到,因为它是在登录屏幕上使用的,它不会提示用户进行身份验证。如果我关闭UAC,它可以工作,但是这不是一个选项,因为客户希望它开箱即用 我能做些什么来解决这个问题吗?不可能尝试实现您自己的OSK,这样它就可以与您的应用程序以相同的权限运行了吗?好的,更多的是关于它的细节 我使用的是Qt的QProc
我能做些什么来解决这个问题吗?不可能尝试实现您自己的OSK,这样它就可以与您的应用程序以相同的权限运行了吗?好的,更多的是关于它的细节 我使用的是Qt的QProcess::startDetached,我相信它在windows上使用了CreateProcess函数调用 我将代码更改为使用ShellExecute()函数调用,它的工作方式非常好
奇怪的是…登录屏幕上使用它是什么意思?你的应用程序在登录前运行?我想说的是,osk在与UAC的交互中是独一无二的,因此我无法从我的应用程序(这是一个标准的桌面应用程序)启动它。我真的不想重新发明轮子,加上本地化键盘是一项要求,有20种布局将是一项巨大的痛苦。作为更新,启动osk.exe被我的用户报告为已损坏。事实证明,由于WowRedirector,Windows 7 64位上的那些无法启动键盘:如果将对startDetached或openUrl的调用包装为对
:Wow64DisableWow64FsRedirection
和::Wow64RevertWow64FsRedirection
的调用,就像在这里的示例中一样,如果没有ShellExecute()
。