Qt调用Windows屏幕键盘QProcess返回-2错误及脚本执行异常
解决Qt调用Windows屏幕键盘(osk.exe)失败的问题
问题原因
64位Windows系统中,32位程序访问C:\Windows\System32目录时会被系统自动重定向到C:\Windows\SysWOW64,但屏幕键盘osk.exe是仅存在于System32的64位程序,因此32位Qt程序无法找到该文件,导致调用失败。
解决方案
方案1:使用Sysnative路径绕过重定向
直接修改Qt代码中的调用路径,替换为Sysnative目录:
int exitCode = QProcess::execute("c:/Windows/Sysnative/osk.exe");
方案2:修改bat脚本中的路径
将myscript.bat里的命令改为:
c:\Windows\Sysnative\osk.exe
之后Qt调用脚本的代码无需修改,即可正常执行。
方案3:编译64位Qt程序
若项目支持64位编译,直接将Qt程序编译为64位版本,此时访问C:\Windows\System32不会触发重定向,原代码可正常运行。
内容的提问来源于stack exchange,提问作者TenG
相关产品推荐
相关产品推荐

