你试试作为一个资源来运行看行不行,或者将exe作为一个资源,然后运行时以二进制的形式读取,再将读取到的二进制信息写入到临时文件中,运行临时文件。或者直接将资源中得exe保存到系统临时文件夹中进行运行。
只是个思路,没试过,你试试
先贴上源代码:
#include<QProcess>
void test6::notepad()
{
QProcess pro = new QProcess;
pro->startDetached("C://Program Files (x86)//Notepad++//notepad++exe", QStringList());
}
说明:
1 使用Qprocess的startDetached()方法,当前程序关闭时,调用的外部程序能够照常运行。
2 第一个参数是外部exe路径,当exe路径中含有空格时,就需要用到第二个参数,如果外部应用程序只需要exe这一个就可以打开时,第二个参数写成QStringList()就可以了。
3 当外部应用程序出了exe还需要其他的文件才能打开时那么将其他文件路径写进QStringList()中。
给出源代码:调用notepad++打开路劲为QString qs的txt文档
void test6::notepad(QString qs)
{
QProcess pro = new QProcess;
pro->startDetached("C://Program Files (x86)//Notepad++//notepad++exe",QStringList(qs));
}
再给出一个我调用IrFanView查看的源代码:
void test6::IrffanView()
{
QProcess pro = new QProcess;
if (!vqs_strempty())
{
vqs_it = vqs_strbegin() + selecteditem;
pro->startDetached("D:\\IrfanView\\i_view32exe", QStringList(vqs_it));
}
else
{
pro->startDetached("D:\\IrfanView\\i_view32exe", QStringList());
}
}
你这个需求可以使用popen()来实现。
FILE file = popen("/linphonec", "w");
fwrite("call xxxx\r\n", 11, file);
fwrite("terminate\r\n", 11, file);
pclose(file);
你可以在QT的按钮slot里向file写入命令,这些命令就能传到linphone的stdin。
这么做的不足 1 popen只能打开单向管道 因此你读不到linphone的输出结果。2 popen在较低版本的uclibc上不是thread safe的
变通的办法是你改一下linphone,调用freopen来重定向自己的stdin和stdout
不过我觉得你最好还是改改linphone,集成到你的QT程序里算了,也不麻烦
应用程序正常初始化错误 1 VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在 C:windows\WinSxS 文件夹中,并用特定的文件夹\文件名称进行标识; 2
本文介绍,在Linux环境下,使用Qt中的 QProcess 类执行shell命令并获取输出。
头文件: #include <QProcess>
一、函数接口
QProcess 类提供了三个函数
二、执行命令
这里主要介绍 execute() 和 start() :
execute() 会将命令输出直接打印到控制台,调用程序无法捕获。
调用程序可通过 readAllStandardOutput() 捕获shell命令的输出
三、管 道
对于shell命令中的 | ,直接传入参数是不行的。
以上的方式是无法执行的。
可以将整个命令作为 sh 的参数传入 或 使用 QProcess::setStandardOutputProcess(QProcess destination) 即将一个进程的标准输出流传入目标进程的标准输入流
对于需要sudo权限的命令,需要使用sudo权限打开qtcreator,或者直接在命令前加上sudo(不建议)。
当然, QProcess 不仅仅可以执行shell命令,也可以用于执行调用外部程序。
以上就是关于qt调用外部exe程序并且将exe程序一起打包全部的内容,包括:qt调用外部exe程序并且将exe程序一起打包、c++中的qt调用、arm上的QT用qprocess调用外部程序(linphone),但是这个程序的运行需要在命令行里输入命令才能实现。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)