Russian Qt Forum

Qt => Общие вопросы => Тема начата: darkhac от Октябрь 19, 2010, 14:00



Название: QProcess. Выполнение консольных команд
Отправлено: darkhac от Октябрь 19, 2010, 14:00
Может кто-нибудь помочь?
   
Код:
console->start("dir"); 
Код:
	console->start("C:\windows\system32\cmd.exe",QStringList()<<" /K"<<" dir");
не выдает ничего
при этом тот-же ping выполняется и результат выводится

Кто нибудь знает как выполнять команды консоли? причем учитывая контекст(тоесть после выполнения к примеру cd Dir1 по вызову dir выводить именно ее содержимое)?


Название: Re: QProcess. Выполнение консольных команд
Отправлено: marbius от Октябрь 19, 2010, 14:57
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QProcess>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   QProcess *console=new QProcess();
 
   console->startDetached("C:\\Windows\\System32\\cmd.exe",QStringList() << "/K" << "dir c:\\");
 
   return a.exec();
}
 

Так пойдет?


Название: Re: QProcess. Выполнение консольных команд
Отправлено: marbius от Октябрь 19, 2010, 15:13
а то, что вы не видите вывода в Вашем примере вовсе не означает, что процесс не был запущен.
попробуйте запустить такой вариант:
Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QProcess>
#include <QDebug>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   QProcess *console=new QProcess();
 
   console->start("C:\\Windows\\System32\\cmd.exe",QStringList() << "/K" << "dir c:\\");
   console->waitForReadyRead();
   qDebug() << console->readAllStandardOutput();
 
   return a.exec();
}
 


Название: Re: QProcess. Выполнение консольных команд
Отправлено: marbius от Октябрь 19, 2010, 15:27
причем учитывая контекст(тоесть после выполнения к примеру cd Dir1 по вызову dir выводить именно ее содержимое)?

Вам необходимо также обратиться к справке по cmd.exe
Код:
help cmd

Код:
cmd.exe /K "cd d:\ && dir"