我正在尝试创建一个简单的QT程序,它允许我在不使用命令行操作的情况下启动avrdude。
我看到使用Qprocess可以很容易地启动任何类型的程序,我尝试了一些简单的程序,如Explorer、Word和其他程序。
问题是,当我试图打开cmd.exe时,什么也没有发生,即使我试图传递一个包含所有信息的批处理文件来正确启动avrdude。
下面是代码
QProcess *process = new QProcess(this);
process->startDetached("cmd.exe",QStringList()<<"C:/avrdude/avr.bat"); 发布于 2017-02-19 02:42:19
我写了一个最小的示例应用程序,它展示了如何使用QProcess::startDetached()命令启动cmd (单击按钮):
// standard C++ header:
#include <iostream>
// Qt header:
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QProcess>
int main(int argc, char **argv)
{
// main application
#undef qApp // undef macro qApp out of the way
QApplication qApp(argc, argv);
QMainWindow qWin;
QPushButton qBtn(QString::fromLatin1("Start cmd"));
QObject::connect(&qBtn, &QPushButton::clicked,
[](bool) {
bool ret = QProcess::startDetached(
#if 1 // let Windows search for cmd.exe in %PATH%
QString::fromLatin1("cmd.exe"),
#else // define exact path of cmd.exe
QString::fromLatin1("C:\\Windows\\system32\\cmd.exe"),
#endif // 1
QStringList()
<< QString::fromLatin1("/K")
<< QString::fromLatin1("echo Hello"));
std::cout << "QProcess::startDetached():"
<< (ret ? "OK." : "Failed!") << std::endl;
});
qWin.setCentralWidget(&qBtn);
qWin.show();
return qApp.exec();
}Qt项目文件留作练习。(抱歉,我使用了CMake。)
请注意#if 1。如果将1替换为0,则使用具有完整路径的替代代码。(在聊天过程中,我们研究了有关启动cmd.exe的特殊问题。)在我的系统上,这两种选择都做得很好。
(我的系统: Windows 10、VS2013、Qt 5.7)
https://stackoverflow.com/questions/42317359
复制相似问题