1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22
1

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

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

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

Код
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2011, 22:31
Ответы с готовыми решениями:

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

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

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

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

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

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  [ТС] 3
Дело в том, что я хотел бы обойтись без BAT файла, ведь можно передать имена файлов в качестве параметров в ShellExecute. Похоже недостает какой то мелочи.
0
4955 / 2419 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.05.2011, 23:06 4
Так вместо батфайла подставь тот экзешник, который тебе надо запустить и всё
0
1 / 1 / 0
Регистрация: 05.05.2011
Сообщений: 22
10.05.2011, 23:14  [ТС] 5
Так не работает
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
4955 / 2419 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
10.05.2011, 23:22 6
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  [ТС] 7
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
LK
Заблокирован
11.05.2011, 04:44 8
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);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
11.05.2011, 06:19 9
Цитата Сообщение от 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2011, 06:19
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru