crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Вопрос по вызову QProcess ?
AntonTatu
  опции профиля:
сообщение 16.3.2009, 12:07
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Возникла необходимость вызывать из одной программы другую, вот такой код не работает, как правильно ?

QProcess myProc;
myProc.start ("C:\1.exe");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.3.2009, 12:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AntonTatu @ 16.3.2009, 15:07) *
\1
слэш в языке С++ имеет специальный смысл, либо пиши
C:/1.exe
либо
C:\\1.exe
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 16.3.2009, 12:27
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 16.3.2009, 12:08) *
Цитата(AntonTatu @ 16.3.2009, 15:07) *
\1
слэш в языке С++ имеет специальный смысл, либо пиши
C:/1.exe
либо
C:\\1.exe


да как я уже только не писал :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 16.3.2009, 12:35
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(AntonTatu @ 16.3.2009, 12:27) *
да как я уже только не писал

ну там же в классе есть куча всего, вывод ошибок, проверка в каком состоянии процесс. при старте объект высылает сигнал о старте. результатт всего этого какой???
есть статические функции запуска программ.
проверял??? смотрел???

на форуме есть темы по QProcess.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 16.3.2009, 12:38
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AntonTatu @ 16.3.2009, 12:27) *
да как я уже только не писал :(

А что пишет? Что QProcess::error() возвращает?

А ты случаем не так вызываешь?
void func()
{
    QProcess myProc;
    myProc.start ("C:\1.exe");
}


А то при выходе из функции, процесс 1.exe будет убит, не успев запуститься.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 16.3.2009, 13:15
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 16.3.2009, 12:38) *
Цитата(AntonTatu @ 16.3.2009, 12:27) *
да как я уже только не писал :(

А что пишет? Что QProcess::error() возвращает?

А ты случаем не так вызываешь?
void func()
{
    QProcess myProc;
    myProc.start ("C:\1.exe");
}


А то при выходе из функции, процесс 1.exe будет убит, не успев запуститься.


ну вобщем да.... , а как же мне его тогда вызывать ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 16.3.2009, 13:21
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AntonTatu @ 16.3.2009, 13:15) *
ну вобщем да.... , а как же мне его тогда вызывать ?

А ты QProcess не на стеке создавай:
QProcess *p = new QProcess(...);
p->start( ... );

Только после завершения процесса, не забывай объект удалить.

или, если надо, дожидайся завершения процесса в функции:

bool QProcess::waitForFinished ( int msecs = 30000 )

void func()
{
    QProcess myProc;
    myProc.start ("C:\1.exe");
    myProc.waitForFinished();
}


Сообщение отредактировал BRE - 16.3.2009, 13:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 16.3.2009, 16:24
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BRE @ 16.3.2009, 13:21) *
Только после завершения процесса, не забывай объект удалить.
или, если надо, дожидайся завершения процесса в функции:
bool QProcess::waitForFinished ( int msecs = 30000 )
void func()
{
    QProcess myProc;
    myProc.start ("C:\1.exe");
    myProc.waitForFinished();
}


в общем копался копался докапался:
QProcess myProc;
QStringList Arg;
Arg << "/c mybat.bat";
myProc.startDetached("cmd.exe",Arg,Catalog); //запускаю батник в нужной папке через cmd.exe
myProc.waitForFinished();


только почему то задержка myProc.waitForFinished(); не работает... почему ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 16.3.2009, 16:55
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(AntonTatu @ 16.3.2009, 16:24) *
в общем копался копался докапался:
QProcess myProc;
QStringList Arg;
Arg << "/c mybat.bat";
myProc.startDetached("cmd.exe",Arg,Catalog); //запускаю батник в нужной папке через cmd.exe
myProc.waitForFinished();


только почему то задержка myProc.waitForFinished(); не работает... почему ?

Что значит не работает, сразу выходит?
Так это потому, что ты процесс отделяешь (detach).
После выполнения myProc.startDetached процесс начинает жить своей жизнью. Даже если ты закроешь программу запустившую процесс, процесс будет работать дальше.
Для таких процессов можно не ждать его завершения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.3.2009, 17:58
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


BRE, AntonTatu, не цитируйте целыми сообщениями, как цитировать по чуть-чуть написано здесь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 5:18