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

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

10.05.2011, 22:31. Показов 5449. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru