Russian Qt Forum
Ноябрь 24, 2024, 03:05
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Запуск внешнего приложения
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запуск внешнего приложения (Прочитано 10458 раз)
@!!ex
Гость
Запуск внешнего приложения
«
:
Февраль 23, 2010, 13:51 »
Проблемы две:
1)
У меня есть целиком команда - это путь/имя к приложению + команды. Например:
svn add %1 --force
Выдирать команды в ручную очень не хочется... Можно ли как-то запустить приложение, чтобы команды QT сам разбил на части?
2)
Если грохнуть QProcess через который приложение было запущено, то приложение сразу завершается.
Как сделать, чтобы приложение продолжало жить после удаления QProcess? После закрытия моей программы?
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Запуск внешнего приложения
«
Ответ #1 :
Февраль 23, 2010, 13:58 »
>>1)...
>>Выдирать команды в ручную очень не хочется
не понял откуда выдирать
>>2)...
>>Как сделать, чтобы приложение продолжало жить после удаления QProcess? После закрытия моей программы?
посмотри bool QProcess::startDetached(...)static
Записан
Юра.
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #2 :
Февраль 23, 2010, 14:39 »
startDetached - кажется то, что нужно.
по поводу аргументов:
в start аргументы передаются в списке.
То есть примерно так:
QProcess::startDetached("svn",QStringList() <<"add"<<"%1"<<"--force");
А хотелось бы что-то типа:
QProcess::startDetached("svn","add %1 --force");
Записан
crossly
Гость
Re: Запуск внешнего приложения
«
Ответ #3 :
Февраль 23, 2010, 14:55 »
а какая собственно говоря разница.... ??
Записан
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #4 :
Февраль 23, 2010, 14:56 »
Разница в том, что у меня команда одной строкой и мне видимо придется ее вручную парсить и разбивать на отдельные команды. чего делать не хочется.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Запуск внешнего приложения
«
Ответ #5 :
Февраль 23, 2010, 15:41 »
>>а какая собственно говоря разница.... ??
именно, вот например:
QString cmd = "svn" + " " + "add %1 --force";
QProcess::startDetached(cmd);
>> команда одной строкой и мне видимо придется ее вручную парсить и разбивать на отдельные команды
как команду на отдельные команды разбивать?
ты изъясняешься совершенно не понятно. Есть команда и есть её аргументы.
Записан
Юра.
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #6 :
Февраль 23, 2010, 15:49 »
Конечно аргументы, а не команды. Просто применимо к svn это команды, вот о чем думал о том и написал.
В справке к QProcess.start написано так:
Note: Arguments that contain spaces are not passed to the process as separate arguments.
Мой английски подсказывает мне, что это означает что строка идет как один аргумент, независимо от наличия пробелов.
Я не прав?
Записан
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #7 :
Февраль 23, 2010, 16:03 »
Ага. Вроде startDetached() нормально воспринимает аргументы в одну строку. Проглядел.
Спасибо.
Записан
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #8 :
Февраль 24, 2010, 08:07 »
Еще вопрос:
Под виндой QProcess::startDetached("svn add");
ничего не делает. Запускает, только если прописать полный путь:
QProcess::startDetached("\"E:\Program Files\Subversion\bin\svn\" add");
Полный путь писать не хочется... Можно как-то научить его запускать по названию команды?
Если из командной строки запускать svn add то все нормально запускается.
Записан
hackoff
Гость
Re: Запуск внешнего приложения
«
Ответ #9 :
Февраль 24, 2010, 09:03 »
аналогичная проблема возникала. Вызывал shutdown из system32. В итоге остановился на том, что определял каталог system32 через winApi, ну а дальше объединял полученный путь с shutdown.exe.
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Запуск внешнего приложения
«
Ответ #10 :
Февраль 24, 2010, 16:06 »
Цитировать
Полный путь писать не хочется... Можно как-то научить его запускать по названию команды?
Занести путь к выпоняемому файлу команды в PATH
Записан
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #11 :
Февраль 24, 2010, 19:03 »
Я специально написал, что:
Цитировать
Если из командной строки запускать svn add то все нормально запускается.
Команда в PATH занесена.
Записан
break
Гипер активный житель
Offline
Сообщений: 846
Re: Запуск внешнего приложения
«
Ответ #12 :
Февраль 24, 2010, 19:50 »
Интересно это баг?
Тогда можно хранить полный путь к запускаемому файлу в настройках программы...
Записан
@!!ex
Гость
Re: Запуск внешнего приложения
«
Ответ #13 :
Февраль 24, 2010, 21:03 »
Проблема в том, что пользователь моей программы не знает что такое SVN. Он даже не знает о его существовании.
Настройки приходят "сверху" от руководителя проектом. А пользователь тупо кликает на кнопки: получить материалы/отослать материалы
Руководитель знает что такое SVN, но путь конкретный у пользователя не знает...
В обычной ситуации это не проблема, т.к. сама система находит и запускает указанное приложение...
Я думаю сделать хинт: создавать shell script и уже его через QProcess запускать. Как я понимаю такой косяк только под виндой, так что под виндой делать через bat файл, во всех остальных ОС - обычным способом.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...