qt - 如何在 QProcess 中使用 cmd.exe 命令
问题描述
我尝试在 Windows 命令提示符中运行命令类型,但进程没有启动。如果我尝试通过命令提示符直接使用此命令,它会起作用。这是代码:
void MainWindow::firmware()
{
QProcess *proc = new QProcess(this);
QString dir("C:/Qtstatic/Examples/My/build-RBoxReader-Desktop_Qt_5_15_0_MSVC2019_64bit-Debug");
proc->setWorkingDirectory(dir);
QMessageBox msgBox;
QString msg = "Current dir: %1";
msg = msg.arg(proc->workingDirectory());
msgBox.setText(msg);
msgBox.exec();
QString command("type");
QStringList arguments;
arguments << "my_file.txt";
proc->start(command, arguments);
if(!proc->waitForStarted()) {
QMessageBox msgBox1;
QString msg1 = "Process state: %1";
msg1 = msg1.arg(proc->state());
msgBox1.setText(msg1);
msgBox1.exec();
QMessageBox msgBox;
QString msg = "Process didn't start";
msgBox.setText(msg);
msgBox.exec();
return;
}
msg = "Process state: %1";
msg = msg.arg(proc->state());
msgBox.setText(msg);
msgBox.exec();
proc->waitForFinished (-1);
}
解决方案
鉴于我在您的代码中看不到任何地方"cmd.exe"
,因此我无法理解您的期望。你的系统上没有type.exe
。您必须实际运行cmd.exe
自己,并type
作为参数传递给它:
你会想要这样的东西:
QString command = QStringLiteral("cmd.exe");
QStringList arguments{QStringLiteral("/K"),
QStringLiteral("type"),
QStringLiteral("my_file.txt")};
推荐阅读
- php - 尝试访问模型时找不到类“App\Models\Student”
- javascript - 如何在 Django 中从 Axios/Ajax 登录?
- node.js - 节点 JS 连接生命周期
- reactjs - React 选择 Typescript 事件类型
- java - 由于线程执行,Spring Batch 的集成测试失败
- python - 跨字典添加 Numpy 数组
- html - 如何让我的图片在左边,文字在右边(Bootstrap)
- spring-cloud-dataflow - 在 Kubernetes 中的 Spring Cloud Data Flow 服务器上启用身份验证
- ruby-on-rails - Rails 连接到 has_many 关系的特定元素
- java - Quarkus:如何将复制的 SQL 数据库与读/写实例连接起来?