Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2008, 15:45   #1
badfilin
Пользователь
 
Регистрация: 15.03.2008
Сообщений: 27
По умолчанию Запуск приложения с параметрами !!!

Здраствийте все!

Вопрос мой таков: Я запускаю какое то приложение через свою программу, как передать параметр к приложению которое я запускаю.
К примеру я хочу запустить так:
ANYPROGRAM.EXE -parametr


Запускаю приложение с помощью CreatProcess:

STARTUPINFO si;
si.cb=sizeof(si);
si.lpReserved=NULL;
si.lpDesktop=NULL;
si.lpTitle=NULL,
si.dwFlags=STARTF_FORCEONFEEDBACK;
si.cbReserved2=0;
si.lpReserved2=NULL;
CreateProcess(ANYPROGRAM.EXE,NULL,NULL,NULL,false,CREATE_NEW_CO NSOLE,NULL,NULL,&si,&pi);

Спасибо.

ЗЫ: запускаю через CreatProcess тк потом я закрываю программу, через TerminateProcess.
badfilin вне форума Ответить с цитированием
Старый 15.03.2008, 15:54   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Ну раз нужен " -parametr", значит и нужно передать его через командную строку - второй параметр в CreateProcess.
B_N вне форума Ответить с цитированием
Старый 15.03.2008, 16:01   #3
badfilin
Пользователь
 
Регистрация: 15.03.2008
Сообщений: 27
По умолчанию

Спасибо. Работает =)
badfilin вне форума Ответить с цитированием
Старый 27.05.2010, 22:15   #4
Xnet
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 5
По умолчанию

Подскажите пожалуйста: Пытаюсь запустить самопальный word.exe с параметрами, делаю это так:
Код:
PROCESS_INFORMATION processInformation;
STARTUPINFO si;
si.cb=sizeof(si);
si.lpReserved=NULL;
si.lpDesktop=NULL;
si.lpTitle=NULL,
si.dwFlags=STARTF_FORCEONFEEDBACK;
si.cbReserved2=0;
si.lpReserved2=NULL;
CreateProcess(L"Word.EXE","exel",NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&processInformation);
}
ругается на exel, если написать так:
Код:
(L"Word.EXE",L"exel",NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&processInformation);
То при открытии word пытается открыть exel как файл, т.е не считает это параметром.

Подскажите правильный синтаксис. Заранее спасибо
Xnet вне форума Ответить с цитированием
Старый 27.05.2010, 22:20   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще то word(да и большинство) первым параметром принимает файл который надо открыть, так что все верно
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.05.2010, 22:28   #6
Xnet
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 5
По умолчанию

Позвольте объясню, данная программа является portable версией, есть файл word.exe в нём зашит сам word и exel, если прописать в коммандной строке (т.е - cmd или bat файле) "word.exe exel" без ковычек, и запустить пакетный файл либо из коммандной строки, то откроется exel если написать просто word.exe то word, т.е если создать батник такой всё запускает, есть программы которые компилируют из bat - cmd в exe файл, тоже всё работает, но почему то его валят антивирусы, видимо кряки и триал стопы и т.д собираются ими(этими программами), вот я и пытаюсь сделать это на нормальном языке программирования, не поверю что нельзя, так как такой же код можно запустить на purebasic : http://www.programmersforum.ru/showt...390#post535390 но данный язык изучать не хочу, хочу понять как это сделать на c++
Xnet вне форума Ответить с цитированием
Старый 27.05.2010, 23:29   #7
Xnet
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 5
По умолчанию

Народ извините, всё работает, не правильно параметр прописывал, но это не всё, exсel то оно вызывает, но если файл .xls указать "открыть с помощью" этой программы то при выполнении этого действия ничего не происходит, грубо говоря у меня получился тупо "батник", а вот с таким кодом на purebasic:
Код:
CountParam=CountProgramParameters()
Text.s
If CountParam>0
  For i=0 To CountParam-1
   If FileSize(ProgramParameter(i))>=0
   Text=Text+Chr(34)+ProgramParameter(i)+Chr(34)+Chr(32)
   Else
   Text=Text+ProgramParameter(i)+Chr(32)
   EndIf
  Next i
EndIf
RunProgram(GetPathPart(ProgramFilename())+"word.exe","excel "+Text,"")
, отрабатывает нормально, как полноценное приложение, один раз указал открывать с помощью.... поставил галочку, что всегда... и всё портабл версия офиса рабоатет, неужели нельзя такое провернуть на c++

Последний раз редактировалось Xnet; 27.05.2010 в 23:44.
Xnet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск внешнего приложения Fia Общие вопросы Delphi 13 18.09.2008 07:27
Запуск приложения Артэс Общие вопросы C/C++ 2 07.06.2008 17:38
Запуск exe с параметрами Altera Общие вопросы Delphi 2 26.02.2008 21:25
Запуск exe-файла из приложения TerVovik Помощь студентам 4 12.12.2007 16:21
Запуск приложения из DLL Hollander Общие вопросы Delphi 2 17.05.2007 20:04