Russian Qt Forum
Сентябрь 30, 2024, 16:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess  (Прочитано 6764 раз)
kadr
Гость
« : Март 04, 2010, 09:56 »

Привет всем, подскажите пожалуйста,как можно сделать так, что бы программа не ждала завершения процесса запущенного Qprocess::execute. Одним словом надо, что бы после нажатия на кнопку, запустился батник, а основная программа закрылась, пока же получается запустить батник, но программа при этом ждет завершения работы батника!
Записан
BRE
Гость
« Ответ #1 : Март 04, 2010, 09:58 »

bool QProcess::startDetached ( ... )   [static]
Записан
kadr
Гость
« Ответ #2 : Март 04, 2010, 10:25 »

bool QProcess::startDetached ( ... )   [static]
Ничего не происходит, программа закрывается, а батник не выполняется!
Записан
BRE
Гость
« Ответ #3 : Март 04, 2010, 10:30 »

Покажи как ты делаешь.
Записан
ax
Чайник
*
Offline Offline

Сообщений: 60


Просмотр профиля
« Ответ #4 : Март 04, 2010, 10:40 »

Под Windows попробуй батник запустить через cmd
Код:
QProcess::startDetached("cmd", QStringList() << "/c" << "ftp.bat", "c:/ftp/send");
« Последнее редактирование: Март 04, 2010, 11:12 от axax » Записан
Akaiten
Гость
« Ответ #5 : Март 04, 2010, 11:06 »

Думаю, что проблема с путями, не может найти ftp.bat. Попробуйте запустить cmd с параметром /k чтобы проверить рабочую директорию.
Записан
kadr
Гость
« Ответ #6 : Март 04, 2010, 11:38 »

Спасибо, за ответ, все получилось.
Теперь вот возник другой вопрос, скажите как можно скачать exe-шник с http сервера, я делаю так:
Код:
 void nomkl_num::update_ver(QNetworkReply* update_ver)
{
  get_prog.setUrl(QUrl("http://"+host.trimmed()+"/zakaz.exe"));
  man_prog.get(get_prog); //Отправляем запрос
  connect(&man_prog,SIGNAL(finished(QNetworkReply*)),this,SLOT(get_program(QNetworkReply*)));
}

void nomkl_num::get_program(QNetworkReply *prog)
{
  QFile prog_name("updates/"+prog->url().path().remove("/"));
  prog_name.open(QIODevice::WriteOnly);
  QDataStream data(&prog_name);
  data << prog->readAll();
  prog_name.close();
}
Он скачивает файлик и добавляет в начало лишние 4 байта, после чего она становиться не работоспособной!
« Последнее редактирование: Март 04, 2010, 12:21 от kadr » Записан
Akaiten
Гость
« Ответ #7 : Март 04, 2010, 13:16 »

Убери QDataStream и используй QFile::write()
Код
C++ (Qt)
prog_name.write(prog->readAll());
 
Записан
kadr
Гость
« Ответ #8 : Март 04, 2010, 13:35 »

Убери QDataStream и используй QFile::write()
Код
C++ (Qt)
prog_name.write(prog->readAll());
 
Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 22.