Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вызов приложения из кода

10K
29 ноября 2012 года
Cybernetic
106 / / 22.07.2009
Требуется вызвать из моей консольной программки другое консольное приложение с необходимыми параметрами (например, различные пути к файлам). Язык C++
Для моего вызова наткнулся на замечательную встроенную функцию _wsystem.
Но как только в пути к программе появились пробелы, началась фигня. _wsystem возвращает 1, а в поток ошибок пишется часть пути до первого пробела с сообщением, что это не является внутренней программой. При этом в строке-параметре я команду экранирую кавычками (например, посылаю так: "D:\test folder\test.exe").

Взял строку, которая подается на _wsystem, и с ней запустил в консоли вручную. Работает!
При этом из моего приложения продолжает не работать.
Как быть в такой ситуации? Что делаю неправильно? Может стоит использовать другую функцию, не _wsystem?
1
29 ноября 2012 года
kot_
7.3K / / 20.01.2000
Строку надо предавать в двойных кавычках:
Например:
Цитата:
"\"D:/test folder/test.exe\""

10K
29 ноября 2012 года
Cybernetic
106 / / 22.07.2009
Цитата:
При этом в строке-параметре я команду экранирую кавычками (например, посылаю так: "D:\test folder\test.exe")


Наверное, плохо выразился. Вот то, что в скобках, это уже уходит в _wsystem. То есть в коде выглядит так:

 
Код:
CUnicodeString cmdFullString = L"\"" + commandName + L"\" " + cmdParameters;
int returnCode = _wsystem( cmdFullString );
10K
29 ноября 2012 года
Cybernetic
106 / / 22.07.2009
Вроде разобрался
Стал писать так:

 
Код:
int returnCode = _wsystem( "call " + cmdFullString );
И все заработало!
Почему? Не знаю. До сих пор не понимаю, почему не работало без call
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог