Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从Vista和Windows 7上的应用程序启动屏幕键盘_C++_Qt_Visual C++_Keyboard_Uac - Fatal编程技术网

C++ 如何从Vista和Windows 7上的应用程序启动屏幕键盘

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

我有一个问题,我有一个应用程序,它有一个工具栏图标来启动屏幕键盘上的系统。除了WindowsVista和Windows7Beta之外,所有这些都可以正常工作。UAC似乎在妨碍osk.exe的运行

我已经读到,因为它是在登录屏幕上使用的,它不会提示用户进行身份验证。如果我关闭UAC,它可以工作,但是这不是一个选项,因为客户希望它开箱即用


我能做些什么来解决这个问题吗?

不可能尝试实现您自己的OSK,这样它就可以与您的应用程序以相同的权限运行了吗?

好的,更多的是关于它的细节

我使用的是Qt的QProcess::startDetached,我相信它在windows上使用了CreateProcess函数调用

我将代码更改为使用ShellExecute()函数调用,它的工作方式非常好


奇怪的是…

登录屏幕上使用它是什么意思?你的应用程序在登录前运行?我想说的是,osk在与UAC的交互中是独一无二的,因此我无法从我的应用程序(这是一个标准的桌面应用程序)启动它。我真的不想重新发明轮子,加上本地化键盘是一项要求,有20种布局将是一项巨大的痛苦。作为更新,启动osk.exe被我的用户报告为已损坏。事实证明,由于WowRedirector,Windows 7 64位上的那些无法启动键盘:如果将对startDetached或openUrl的调用包装为对
:Wow64DisableWow64FsRedirection
::Wow64RevertWow64FsRedirection
的调用,就像在这里的示例中一样,如果没有
ShellExecute()