В чем разница между BAT и EXE файлами
, при запуске их с помощью CreateProcess?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.140] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online
В чем разница между BAT и EXE файлами
, при запуске их с помощью CreateProcess?
|
|
|
|
|
??
|
|
Сообщ.
#2
,
|
|
|
|
M Тема перенесена из C/C++ -> Чистый С/С++ |
|
Сообщ.
#3
,
|
|
|
|
BAT содержит команды ДОСовского интерпретатора, а EXE -- исполняемый двоичный код + все необходимое для его правильной загрузки.
Поэтому чтобы выполнить BAT надо запустить command.com с параметром /C batch_file |
|
Сообщ.
#4
,
|
|
|
|
Из CreateProcess?
|
|
Сообщ.
#5
,
|
|
|
|
В том, что exe-файлы - это файлы, исполняемые системой и имеющие соответствующий формат. BAT-файлы - это файлы, исполнямые командным процессором (cmd.exe). Дабы не заморачиваться можешь делать так: читаешь значение переменной окружения ComSpec (она содержит путь к командному процессору), и то, что тебе нужно запустить передаешь ему в качестве параметров.
|
|
Сообщ.
#6
,
|
|
|
|
Цитата читаешь значение переменной окружения ComSpec это какой функцией? Цитата передаешь ему в качестве параметров кому ему? Можно поподробнее, пожалуйста? И с примером бы? Спасибо! |
|
Сообщ.
#7
,
|
|
|
|
Грубо говоря, ты должен сделать следующее:
![]() ![]() std::string com_spec = getenv("ComSpec"); com_spec += " "; com_spec += command_for_run; // command_for_run - то, что тебе надо запустить system(com_spec.c_str()); |
|
Сообщ.
#8
,
|
|
|
|
Понятно, спасибо!
Добавлено Сегодня, 15:48 Только мне б еще, чтоб возвращалось управление программе... Достоточно ли для этого использовать в приведенном выше примере вместо функции system() функцию CreateProcess()? Добавлено Сегодня, 15:51 Добавлено В каком виде должна быть записана команда на выполнение в сообщении #7? |
|
Сообщ.
#9
,
|
|
|
|
У меня была такая же проблема. Правда, я запускал exe-шник. CreateProcess работает с ними без проблем. Не знал, что с bat-файлами не так...
|
|
Сообщ.
#10
,
|
|
|
|
а ShellExecute не помогает?
|