• 10624阅读
  • 14回复

[提问]QProcess打不开外部应用程序怎么办?求指导 [复制链接]

上一主题 下一主题
离线lijianglong
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-11
我想编个程序,启动qq音乐播放器,但是始终没有成功,该怎么办呢?求指导!
  1. #ifndef MYWIDGET_H
  2. #define MYWIDGET_H
  3. #include <QWidget>
  4. #include <QProcess>
  5. #include <QPushButton>
  6. #include <QMessageBox>
  7. class myWidget : public QWidget
  8. {
  9.     Q_OBJECT
  10. public:
  11.     //explicit myWidget(QWidget *parent = 0);
  12.     myWidget(QWidget *parent = 0);
  13. signals:
  14. public slots:
  15.     void startProcess();
  16.     void processError(QProcess::ProcessError error);
  17. private:
  18.     QProcess *process;
  19.     QPushButton *push_button;
  20. };
  21. #endif // MYWIDGET_H

下面是cpp文件
  1. #include "mywidget.h"
  2. myWidget::myWidget(QWidget *parent) :
  3.     QWidget(parent)
  4. {
  5.     QPushButton *push_button  = new QPushButton("启动",this);
  6.       QObject::connect(push_button, SIGNAL(clicked()), this, SLOT(startProcess()));
  7.       process = new QProcess();
  8.       QObject::connect(process, SIGNAL(error(QProcess::ProcessError)), this,
  9.                        SLOT(processError (QProcess::ProcessError)));
  10. }
  11. void myWidget::startProcess()
  12. {
  13.   process->start("D:\\Program Files\\Tencent\\QQMusic\\1123.2014.10.14.20.49.28\\QQMusic.exe");
  14. }
  15. void myWidget::processError(QProcess::ProcessError error)
  16. {
  17. switch(error)
  18. {
  19.   case QProcess::FailedToStart:
  20.     QMessageBox::information(0,"FailedToStart","FailedToStart");
  21.     break;
  22.   case QProcess::Crashed:
  23.     QMessageBox::information(0,"Crashed","Crashed");
  24.     break;
  25.   case QProcess::Timedout:
  26.     QMessageBox::information(0,"FailedToStart","FailedToStart");
  27.     break;
  28.   case QProcess::WriteError:
  29.     QMessageBox::information(0,"Timedout","Timedout");
  30.     break;
  31.   case QProcess::ReadError:
  32.     QMessageBox::information(0,"ReadError","ReadError");
  33.     break;
  34.   case QProcess::UnknownError:
  35.     QMessageBox::information(0,"UnknownError","UnknownError");
  36.     break;
  37.   default:
  38.     QMessageBox::information(0,"default","default");
  39.     break;
  40. }
  41. }

下面是运行的显示界面
离线ashe0817

只看该作者 1楼 发表于: 2014-11-11
因为你的路径中有空格,改下面这样就行了。

QProcess::execute("\"D:\\Program Files\\Tencent\\QQMusic\\1123.2014.10.14.20.49.28\\QQMusic.exe\"");
4条评分好评度+1贡献值+1金钱+5威望+1
lijianglong 好评度 +1 根据帮助,问题得以解决!!谢谢啦!!! 2014-11-11
lijianglong 贡献值 +1 根据帮助,问题得以解决!!谢谢啦!!! 2014-11-11
lijianglong 威望 +1 根据帮助,问题得以解决!!谢谢啦!!! 2014-11-11
lijianglong 金钱 +5 根据帮助,问题得以解决!!谢谢啦!!! 2014-11-11
离线lijianglong

只看该作者 2楼 发表于: 2014-11-11
回 ashe0817 的帖子
ashe0817:因为你的路径中有空格,改下面这样就行了。
QProcess::execute("\"D:\\Program Files\\Tencent\\QQMusic\\1123.2014.10.14.20.49.28\\QQMusic.exe\""); (2014-11-11 17:56) 

谢谢你的帮助,问题解决!!!QQ音乐播放器顺利打开了,但是我想更深入的问一下,它现在打开了但不是播放状态,是否可以使其打开后自动播放音乐呢?
离线xhybb

只看该作者 3楼 发表于: 2014-11-11
回 lijianglong 的帖子
lijianglong:谢谢你的帮助,问题解决!!![表情]QQ音乐播放器顺利打开了,但是我想更深入的问一下,它现在打开了但不是播放状态,是否可以使其打开后自动播放音乐呢? (2014-11-11 18:45) 

播放器里面可以设置的
离线lijianglong

只看该作者 4楼 发表于: 2014-11-11
回 xhybb 的帖子
xhybb:播放器里面可以设置的 (2014-11-11 21:25) 

额。。。不是说的在QQ音乐播放器界面上设置吧,我是希望在我自己编的程序中怎么把QQ音乐播放器打开,并在我的程序中设置好它的音量,播放模式【单曲循环等】,并使其自动开始播放,这样就可以不用在打开的QQ音乐播放器上手动设置了,不知道QProcess可以实现不可以,求大神指导!!
离线toby520

只看该作者 5楼 发表于: 2014-11-12
哈哈,楼主 你好可爱啊,这个功能 你要看下QQ音乐播放器 是否提供了入口参数,不然无能为力吧
比如:"C:\Program Files (x86)\kingsoft\kingsoft antivirus\kwtpanel.exe" /weatherpanel /src:11 可以传递参数 或者可以做到
4条评分好评度+1贡献值+1金钱+1威望+1
lijianglong 好评度 +1 恩恩 2014-11-12
lijianglong 贡献值 +1 恩恩 2014-11-12
lijianglong 威望 +1 恩恩 2014-11-12
lijianglong 金钱 +1 恩恩 2014-11-12
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线lijianglong

只看该作者 6楼 发表于: 2014-11-12
回 toby520 的帖子
toby520:哈哈,楼主 你好可爱啊,这个功能 你要看下QQ音乐播放器 是否提供了入口参数,不然无能为力吧
比如:"C:\Program Files (x86)\kingsoft\kingsoft antivirus\kwtpanel.exe" /weatherpanel /src:11 可以传递参数 或者可以做到 (2014-11-12 09:09) 

我是个大菜鸟,对这个是真的不懂!那我该怎么知道QQ音乐播放器是否提供了入口参数呢?还有你下面的【"C:\Program Files (x86)\kingsoft\kingsoft antivirus\kwtpanel.exe" /weatherpanel /src:11 可以传递参数 或者可以做到】是什么意思呢?
离线dbzhang800

只看该作者 7楼 发表于: 2014-11-12
关于QProcess的一些概念,看这个吧 http://blog.csdn.net/dbzhang800/article/details/6876451

至于 QQ音乐播放器 有没有提供命令行接口 或其他IPC接口,你需要咨询腾讯。
离线toby520

只看该作者 8楼 发表于: 2014-11-12
楼主可以拿qq播放器在cmd下 help一下 看看有命令行输出帮助不
4条评分好评度+1贡献值+1金钱+3威望+1
lijianglong 好评度 +1 这个论坛里这么多热心的人,真是给了我学习qt的勇气和信心啊!谢谢 2014-11-12
lijianglong 贡献值 +1 这个论坛里这么多热心的人,真是给了我学习qt的勇气和信心啊!谢谢 2014-11-12
lijianglong 威望 +1 这个论坛里这么多热心的人,真是给了我学习qt的勇气和信心啊!谢谢 2014-11-12
lijianglong 金钱 +3 这个论坛里这么多热心的人,真是给了我学习qt的勇气和信心啊!谢谢 2014-11-12
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线toby520

只看该作者 9楼 发表于: 2014-11-12
刚刚看了下 好像没有传入参数的可能
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线dbzhang800

只看该作者 10楼 发表于: 2014-11-12
回 toby520 的帖子
toby520:刚刚看了下 好像没有传入参数的可能 (2014-11-12 14:25) 

对于一个Windows下的程序来说,链接时 可以选 console子系统还是windows子系统 (和程序带不带界面无关)。

一般GUI程序,链接都是windows子系统,它的标准输入\标准输出\标准出错 这几个流都没有依附到控制台上。即使程序有 prinf() 等语句,也是看不到的输出。
离线lijianglong

只看该作者 11楼 发表于: 2014-11-12
回 toby520 的帖子
toby520:
刚刚看了下 好像没有传入参数的可能

请问你说的“可以拿qq播放器在cmd下 help一下 看看有命令行输出帮助不”是指的这样吗?

离线lijianglong

只看该作者 12楼 发表于: 2014-11-12
回 toby520 的帖子
toby520:刚刚看了下 好像没有传入参数的可能 (2014-11-12 14:25) 

不知道该怎么help.......
离线dbzhang800

只看该作者 13楼 发表于: 2014-11-12
回 lijianglong 的帖子
lijianglong:不知道该怎么help.......[表情] (2014-11-12 20:22) 

多看看其他的回复。

我前面提了,对于这种程序(链接到windows子系统的程序),你在控制台下运行,是什么信息都得不到的。因为它的标准输出,标准出错 都没关联到到控制台上。 进一步讲,这种程序通常内部都压根不用prinf()等标准输出函数的。

4条评分好评度+1贡献值+1金钱+3威望+1
lijianglong 好评度 +1 谢谢大神指导!!我感觉你说的对!但是我真不懂!!!还是谢谢大神!但是我还是不知道该怎么办。。。 2014-11-12
lijianglong 贡献值 +1 谢谢大神指导!!我感觉你说的对!但是我真不懂!!!还是谢谢大神!但是我还是不知道该怎么办。。。 2014-11-12
lijianglong 威望 +1 谢谢大神指导!!我感觉你说的对!但是我真不懂!!!还是谢谢大神!但是我还是不知道该怎么办。。。 2014-11-12
lijianglong 金钱 +3 谢谢大神指导!!我感觉你说的对!但是我真不懂!!!还是谢谢大神!但是我还是不知道该怎么办。。。 2014-11-12
离线lijianglong

只看该作者 14楼 发表于: 2014-11-12
谢谢大神指导!!我感觉你说的对!但是我真不懂!!!还是谢谢大神!但是我还是不知道该怎么办。。。
快速回复
限100 字节
 
上一个 下一个