【发布时间】:2017-07-08 03:02:19
【问题描述】:
我正在尝试创建一个简单的 QT 程序,它允许我在不使用命令行操作的情况下启动 avrdude。
我看到使用 Qprocess 可以轻松启动任何类型的程序,我尝试使用 Explorer Word 等简单程序成功。
问题是当我尝试打开 cmd.exe 时没有任何反应,即使我尝试传递包含所有信息的批处理文件以正确启动 avrdude。
这是代码
QProcess *process = new QProcess(this);
process->startDetached("cmd.exe",QStringList()<<"C:/avrdude/avr.bat");
【问题讨论】:
-
请编辑您的帖子以显示您是如何将批处理文件传递给
QProcess中的cmd.exe。您可以使用包含echo "Hello."的批处理文件来形成可重现的样本。 -
感谢您的回复,我已经编辑了我的代码,如您所见,我要求打开 cmd.exe,然后我想传递我的批处理文件的绝对路径。在我的版本中,绝对路径由一个 qstring 给出,它保存从 Qfiledialog 获得的路径
-
第一眼看起来还不错。
cmd.exe是打开还是关闭,还是保持打开状态。在前一种情况下,您可以使用 '/K' 作为第一个参数。我刚刚通过在“cmd.exe”中输入“help cmd”发现了这一点。 -
您是否注意到
startDetached()是static?因此,QProcess::startDetached(...);应该可以工作。在您的情况下(使用QProcess的实例)start()是实际使用的方法。 -
谢谢,我用我在这里找到的任何东西写了它......不幸的是,与其他应用程序不同,即使我使用 startdetached 也没有任何反应......我不知道它是否不起作用或者也许,如果在窗口消失之前太快无法看到窗口