Форум программистов, компьютерный форум CyberForum.ru

Запуск программы через C++ и консоль - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
11.01.2013, 17:47     Запуск программы через C++ и консоль #1
Доброго времени суток. Столкнулся с проблемой, что если запускать программу через функцию system, а в пути к программе есть пробелы, то консоль ругается, мол "C:\ Program" не является внутренней или внешней......

вот пример кода:
C++
1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{
   string cmd;
   cmd = "C:\\Program Files\\PDFCreator\\PDFCreator.exe /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
   system(cmd.c_str());
   system("pause");
        return 0;
}
кто что может посоветовать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
11.01.2013, 17:52     Запуск программы через C++ и консоль #2
Обернуть всю команду в кавычки...
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
11.01.2013, 17:55  [ТС]     Запуск программы через C++ и консоль #3
Цитата Сообщение от 0x10 Посмотреть сообщение
Обернуть всю команду в кавычки...
не сработало, тоже самое выводит.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.01.2013, 18:09     Запуск программы через C++ и консоль #4
C++
1
"\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
11.01.2013, 18:19     Запуск программы через C++ и консоль #5
Toshkarik, Не могли бы объяснить, а то непонятно. Ведь строка и так уже в кавычках. Зачем еще одни нужны?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,601
Записей в блоге: 17
11.01.2013, 18:23     Запуск программы через C++ и консоль #6
Иначе будет читать до первого пробела...
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
11.01.2013, 18:31     Запуск программы через C++ и консоль #7
Попробуй
C++
1
"\"start " + cmd.c_str() + "\"";
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,601
Записей в блоге: 17
11.01.2013, 18:33     Запуск программы через C++ и консоль #8
Используй ShellExecute() или CreateProcess()
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
11.01.2013, 18:44     Запуск программы через C++ и консоль #9
Все дело в самом интерпретаторе команд Windows. Путь, содержащий пробелы, нужно брать в кавычки, иначе считается, что после первого пробела идут параметры для запуска программы.
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 11:06  [ТС]     Запуск программы через C++ и консоль #10
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
"\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
не сработало(

Цитата Сообщение от m1Rr0r Посмотреть сообщение
C++
1
"\"start " + cmd.c_str() + "\"";
если так, как вы написали - "Windows не удалось найти 'c:\Program'. Проверьте, что имя....."
если так:
C++
1
"start \"" + cmd.c_str() + "\"";
открывается чистая командная строка, смотрящая в директорию, из которой была запущена моя программа. сам же pdf creator не отрабатывает.

сейчас почитаю про
Цитата Сообщение от Avazart Посмотреть сообщение
ShellExecute() или CreateProcess()
.

если что, у меня cmd Windows XP [Версия 5.1.2600]
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
14.01.2013, 11:24     Запуск программы через C++ и консоль #11
Цитата Сообщение от tokutei Посмотреть сообщение
не сработало(
У меня сработало. Правда я не string использовал а char *
C++
1
2
3
char *str = "\"C:\\Program Files\\1.djvu\"";
 
system(str);
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 11:49  [ТС]     Запуск программы через C++ и консоль #12
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
У меня сработало. Правда я не string использовал а char *
C++
1
2
3
char *str = "\"C:\\Program Files\\1.djvu\"";
 
system(str);
я напишу так: вот такой код у меня хорошо отрабатывает
C++
1
2
cmd = "\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\"";
system(cmd.c_str());
а вот такой уже нет:
C++
1
2
cmd = "\"C:\\Program Files\\PDFCreator\\PDFCreator.exe\" /NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
system(cmd.c_str());
вся проблема заключается в параметрах. можно конечно запускать через такой батничек
C++
1
2
3
cd C:\Program Files\PDFCreator
PDFCreator.exe /NoStart /IF"%1" /OF"%2" 
exit
но это уже извращение..

Добавлено через 7 минут
у меня паника, вот такой код через bat отлично проходит (вставляю в тег с++ для читабельности)
C++
1
2
"C:\Program Files\PDFCreator\PDFCreator.exe" /NoStart /IF"D:\work\1101130203.ps" /OF"D:\work\1101130203.pdf" 
exit
а через сам c++ никак( все таки иду копать в пользу CreateProcess
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 12:44     Запуск программы через C++ и консоль
Еще ссылки по теме:

Компиляция C++ кода через консоль C++
C++ Вывод текста описания команд в консоль командной строки при запуске программы через командную строку
C++ Запуск другой программы через определённое время

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tokutei
2 / 2 / 0
Регистрация: 06.12.2012
Сообщений: 7
14.01.2013, 12:44  [ТС]     Запуск программы через C++ и консоль #13
Решил проблему так:
C++
1
2
3
string cmd = "/NoStart /IF\"D:\\work\\1101130203.ps\" /OF\"D:\\work\\1101130203.pdf\"";
ShellExecute(NULL, "open", "C:\\Program Files\\PDFCreator\\PDFCreator.exe", cmd.c_str(), NULL, SW_SHOWNORMAL);
system("pause");
Yandex
Объявления
14.01.2013, 12:44     Запуск программы через C++ и консоль
Ответ Создать тему
Опции темы

Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru