qt 启动exe(外部程序)
时间: 2023-05-28 15:05:46 浏览: 171
在Qt中启动外部程序可以使用QProcess类。下面是一个简单的示例:
```cpp
#include <QCoreApplication>
#include <QProcess>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建一个QProcess对象
QProcess process;
// 设置要启动的程序名称和参数
QString program = "notepad.exe";
QStringList arguments;
arguments << "test.txt";
// 启动外部程序
process.start(program, arguments);
// 等待程序退出
process.waitForFinished();
return a.exec();
}
```
在上面的示例中,我们使用QProcess类创建了一个名为process的对象,然后设置了要启动的程序名称和参数。最后,我们调用start()方法来启动外部程序,并使用waitForFinished()方法等待程序退出。
注意:在Windows系统中,如果要启动的程序不在系统路径中,需要指定程序的完整路径。例如:
```cpp
QString program = "C:/Program Files (x86)/Microsoft Office/root/Office16/winword.exe";
```
另外,如果要启动的程序需要管理员权限,需要在程序中加入以下代码:
```cpp
process.setCreateProcessArgumentsModifier([](QProcess::CreateProcessArguments *args){
args->flags |= CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP;
args->startupInfo->dwFlags &= ~STARTF_USESTDHANDLES;
args->startupInfo->cb = sizeof(STARTUPINFOEXW);
args->startupInfo->lpAttributeList = nullptr;
});
process.setProcessChannelMode(QProcess::MergedChannels);
process.start("C:/Windows/System32/cmd.exe", QStringList() << "/c" << "netsh interface set interface \"以太网\" admin=enable");
```
这里的代码是启动一个命令行窗口,并以管理员权限执行了一个命令。注意:这种方法只在Windows系统中有效。
阅读全文