标签:qt shellexecute 默认程序打开文件 explorer.exe createprocess qprocess
用法: QProcess::execute("explorer 文件名");
例: QProcess::execute("explorer c:\\123.txt");
----------------------------------------------------------------------
应该早有大虾发现了这个方法,只是我没搜到,于是有了下面这篇聒噪的探索文章。
如何在Qt中用默认程序打开文件。比如给个"123.html"参数,就能用浏览器打开。
网上搜了一下,多数的解决方法是用ShellExecute这个Windows Api函数。
可行,但总希望能找到一个Qt的Api来使用。
继续找资料。发现一个QProcess类。
测试QProcess::execute("notepad.exe");
成功打开记事本。
以为有戏。。
接着测试 --- ---
QProcess::execute("start c:\\123.txt");
失败了。。心凉了半截。
查看QProcess::execute代码,发现最终其实就是调用windows的CreateProcess函数。
start估计不是个程序,只是个命令,所以报了个无法找到程序的错误。
反过来说只要找到一个程序,这个程序能用默认程序打开文件就行了。
继续找资料。
在一大堆信息中苦苦寻找,终于在一个角落发现有人提到了explorer.exe。
很熟悉的名字吧。这个就是windows的文件资源管理器。打开进程管理器,总会见到几个在运行。
地址如下(感谢那位网友)
http://zhidao.baidu.com/link?url=tlp1jLfEsBICWgnTeuKT8hiahA7gFtghzoQ73ufI0frbI5Uw03mI79n5Qi8739oq68nlws4wSRlW0Jmk3wU8Ya
冥冥之中,有个声音在对我说,这就是解决问题的钥匙了。^-^
接着查找explorer.exe的参数用法。
闲话少说,经过在cmd一番测试。得出用法是explorer filename.
例:explorer c:\123.txt
加不加引号随意,要注意的是用反斜杠,在cmd窗口只用一杠就行了,否则就会打开我的文档。
在Qt中测试代码
QProcess::execute("explorer c:\\123.txt");
成功打开!开心^-^
本文出自 “三人乘虎” 博客,请务必保留此出处http://darhx.blog.51cto.com/7920146/1641680
标签:qt shellexecute 默认程序打开文件 explorer.exe createprocess qprocess
原文地址:http://darhx.blog.51cto.com/7920146/1641680