Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/27: Рейтинг темы: голосов - 27, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22

Запуск программы с передачей параметров

10.05.2011, 22:31. Показов 5491. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите кто знает, у меня есть BAT файл следующего содержания:

Code
1
Pk2RDF.exe 070211old.001 RDF.rdf PKV2.ini >>log.txt
Он запускает программу Pk2RDF.exe и передает ей в качестве параметров имена трех файлов. Сейчас я должен запустить эту программу с помощью функции:

C++
1
ShellExecute(Handle, "open", filename.c_str(), "Files\\070211.001 Files\\111.rdf Files\\111.ini", NULL, SW_SHOW);
При этом все работает, доло в том, что имена файлов не постоянны я пытаюсь передать с помощью переменной:

C++
1
2
3
4
5
6
AnsiString s =
   (ExtractFileName(OpenDialog2->FileName) + " " +
    ExtractFileName(OpenDialog1->FileName + ".rdf ") +
    ExtractFileName(OpenDialog1->FileName + " >> log.txt"));
 
ShellExecute(Handle, "open", filename.c_str(), "s.c_str()", NULL, SW_SHOW);
Так не работает, помогите разобраться у меня уже все варианты кончились.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2011, 22:31
Ответы с готовыми решениями:

Запуск приложения на MapBasic из С++ Builder с передачей параметров
Здравствуйте! Хочу запустить из С++ Builder приложение, написанное на MapBasic: .mbx, с передачей в MapBasic имени файла, с которым...

Вызвать один метод из другого с передачей параметров
как в одной void __fastcall TG15_form::name_1(TObject *Sender) { ... } вывести другую void __fastcall...

сохранение временных параметров работы программы...
есть затея сделать так что бы выбранные пользователем действия сохранялись при следующем открытии программы. пока нашел несколько...

8
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.05.2011, 22:43
А так не работает

C++
1
ShellExecute(Handle, "open", filename.bat, s.c_str(), NULL,SW_RESTORE);
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22
10.05.2011, 22:50  [ТС]
Дело в том, что я хотел бы обойтись без BAT файла, ведь можно передать имена файлов в качестве параметров в ShellExecute. Похоже недостает какой то мелочи.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.05.2011, 23:06
Так вместо батфайла подставь тот экзешник, который тебе надо запустить и всё
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22
10.05.2011, 23:14  [ТС]
Так не работает
C++
1
ShellExecute(Handle, "open", filename.c_str(), "s.c_str()", NULL, SW_SHOW);
filename - это файл .exe который нужно запустить,
s - это имена трех файлов которые ему нужно передать. Если написать так:

C++
1
ShellExecute(Handle, "open", filename.c_str(), "Files\\070211.001 Files\\111.rdf Files\\111.ini", NULL, SW_SHOW);
то работает, открывается консоль и происходит чтение и преобразование файла 070211.001 в файл 111.rdf на основании пареметров в файле 111.ini. Можно было бы оставить код в таком виде, но имена файлов меняются, я задаю их с помощью OpenDialog поэтому нужна переменная s, содержащая строку с именами трех файлов.
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.05.2011, 23:22
C++
1
ShellExecute(Handle, "open", filename.c_str(), "Files\\"+ExtractFileName(OpenDialog1->FileName)+"Files\\"+ExtractFileName(OpenDialog2->FileName)+"Files\\"+ExtractFileName(OpenDialog3->FileName), NULL, SW_SHOW);
1
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22
11.05.2011, 00:08  [ТС]
Sasha, спасибо за помощь я сейчас попробую этот вариант.

Добавлено через 41 минуту
К сожалению, код не заработал. Ошибки:

[BCC32 Error] u_useINI.cpp(93): E2034 Cannot convert 'UnicodeString' to 'const char *'

[BCC32 Error] u_useINI.cpp(93): E2342 Type mismatch in parameter 'lpParameters' (wanted 'const char *', got 'UnicodeString')

Программа которую я должен запустить консольная, окно появляется на мгновение я не успеваю прочесть сообщение об ошибке, и не знаю как его остановить.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.05.2011, 04:44
C++
1
ShellExecute(Handle, L"open", filename.c_str(), "Files\\"+ExtractFileName(OpenDialog1->FileName)+L"Files\\"+ExtractFileName(OpenDialog2->FileName)+L"Files\\"+ExtractFileName(OpenDialog3->FileName), NULL, SW_SHOW);
а не проще последовательно три раза вызвать ShellExecute ?
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
11.05.2011, 06:19
Цитата Сообщение от LK Посмотреть сообщение
C++
1
ShellExecute(Handle, L"open", filename.c_str(), "Files\\"+ExtractFileName(OpenDialog1->FileName)+L"Files\\"+ExtractFileName(OpenDialog2->FileName)+L"Files\\"+ExtractFileName(OpenDialog3->FileName), NULL, SW_SHOW);
а не проще последовательно три раза вызвать ShellExecute ?
Он должен 1 раз вызываться, просто параметров много. Я в таких случаях сначала формирую строку параметров отдельно (так и для отладки легче), а потом в нужном формате строку запихиваю в ShellExecute.
Типа такого:
C++
1
2
AnsiString param="Files\\"+ExtractFileName(OpenDialog1->FileName)+" Files\\"+ExtractFileName(OpenDialog2->FileName)+" Files\\"+ExtractFileName(OpenDialog3->FileName);
ShellExecute(Handle, L"open", filename.c_str(), param.c_str(), NULL, SW_SHOW);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2011, 06:19
Помогаю со студенческими работами здесь

Запуск программы с диска с последующей сменой диска (не выходя из программы)
Необходимо запустить программу с CD-диска, что бы иметь возможность после этого сменить диск, продолжая работать в программе. Как...

Запуск процесса с передачей параметров
Здравствуйте. Требуется запустить некий процесс proc несколько раз. И передать ему 2 параметра. Но эти параметры это переменные. как...

Запуск пограмной строкой с передачей параметров
Подскажите пожалуста, как в Delphi, реализовать запуск приложения из коммандной строки. Передаются некие парамнтры в стандартном виде...

Запуск процедуры по имени с передачей ей параметров
Хочу запускать процедуру по ее имени с передачей ей параметров Пробую в Excel : метод App.Evaluate - вызывает двойное срабатывание...

Запуск консоли из bat с передачей нескольких параметров в консоль
Собственно нужно запустить консоль из батника с параметром "/K" (т.е. после выполнения команд консоль должна остаться) и передать в консоль...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru