![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как во время выполнения программы создать EXE файл? [D6, Win95/98, WinXP]
moor38 © (2004-02-15 15:19:00)Т.е. работает моя программа и после некоторых условий необходимо создать исполняемый файл со своими задачами.
Cash (2004-02-25 12:18:00) [1]А такой способ будет ли правильным.
Берем, создаем программу со скриптовым движком, которая читает скрипты из своего ресурса. Создаем основную прогу, кладем в нее (ресурс) скриптовую программу. Во время выполнения основной копируем из ресурса скриптовую прогу и кладем в нее (ресурс) созданный скрипт. Далее скриптовая прга ходит сама по себе.</I >
строго не судить, я с ресурсами недавно :)
DVM (2004-02-24 23:33:00) [2]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально
Да никто и не спорит. Делают же люди.
> для этого надо всего лишь написать компилятор
Всего лишь? Тоже официальное заявление. Вы Билл Гейтс?
moor38 (2004-02-24 23:17:00) [3]
> Max003 (21.02.04 20:05) [18]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально, для этого надо всего
> лишь написать компилятор и текст программы. Могу дать кусок
> готовой программы. Сейчас. Ловите.
Если не поленишся скинь мне на мыло moor38@yandex.ru
Буду очень благодарен.
moor38 (2004-02-24 23:14:00) [4]
> Max003 (21.02.04 20:05) [18]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально, для этого надо всего
> лишь написать компилятор и текст программы. Могу дать кусок
> готовой программы. Сейчас. Ловите.
Если не поленишся скинь мне на мыло moor38@yandex.ru
Буду очень благодарен.
Talla2k (2004-02-22 01:52:00) [5]to Max003: Что-то не впоймали!
Max003 (2004-02-21 20:05:00) [6]Могу официально заявить, что создать исполняемый файл во время выполнения программы реально, для этого надо всего лишь написать компилятор и текст программы. Могу дать кусок готовой программы. Сейчас. Ловите.
KosilkA (2004-02-21 19:55:00) [7]
> moor38 (15.02.04 19:07) [11]
> KosilkA - да, догадаться было тяжело, спасибо.
видимо тяжело , потому что если б ты не поленился и набрал в поисковике то о чем я уже говорил , то нашел бы там то что написал тебе
> Alexander666 © (16.02.04 00:51) [12]
....
к слову , "как сувать ехе в ресурс" ...как там во всех советах написано ? ... берется блокнот, пишется чтото типа MYEXE RCDATA, потом brcc32.exe и т.д. и т.п.... не слюшайте эти вредные советы! в Дельфи, в меню "Project" есть пункт "Resources" , и там все это делается парой кликов мышь, что намного проще :-)
Рамиль (2004-02-20 20:40:00) [8]
> Alexander666 © (16.02.04 00:51) [12]
> MYEXE RCDATA
> myexe.exe
>
> Сохранил с расширением .rc, а потом уж каким-нить редактором
> ресурсов откомпилируй. Все просто.
moor38 (2004-02-19 09:52:00) [9]
> Alexander666 © (16.02.04 00:51) [12]
> Я всегда пользовался таким методом (как и сказал Digitman)
>
>
> procedure ExtractExe;
> var
> Exe: TResourceStream;
> begin
> Exe := TResourceStream.Create(hInstance, 'MYEXE', RT_RCDATA);
> try
> Exe.SaveToFile('MyExe.exe');
> finally
> Exe.Free;
> end;
> end;
Насколько я понял это сохранить ресурс как ЕХЕ файл, но для начала необходимо всунуть этот ЕХЕ файл в мою прогу, а как?
Digitman (2004-02-16 08:08:00) [10]
> где взять готове компиляторы/линкеры для генерации PE-файлов
> в ран-тайм?
не поверишь, все это у тебя перед носом - в составе Делфи на твоей машине
Alexander666 (2004-02-16 00:52:00) [11]Имелось в виду, чтобы программу написать, которая бы записывала ехе в ресурсы другого ехе.
Alexander666 (2004-02-16 00:51:00) [12]Я всегда пользовался таким методом (как и сказал Digitman)
procedure ExtractExe;
var
Exe: TResourceStream;
begin
Exe := TResourceStream.Create(hInstance, 'MYEXE', RT_RCDATA);
try
Exe.SaveToFile('MyExe.exe');
finally
Exe.Free;
end;
end;
Мда, тут еще на сайте в одной из статей написано, как сувать ехе в ресурс. Открываешь Блокнот, а дальше:
MYEXE RCDATA
myexe.exe
Сохранил с расширением .rc, а потом уж каким-нить редактором ресурсов откомпилируй. Все просто.
Я еще пытался сделать запись ехе в ресурс другого ехе, но так и не получилось...
moor38 (2004-02-15 19:07:00) [13]Defunct - Спасибо, общая схема понятна, далее попытаюсь разобраться самостоятельно.
KosilkA - да, догадаться было тяжело, спасибо.
KosilkA (2004-02-15 18:56:00) [14]
> moor38 (15.02.04 18:31) [8]
> Извиняюсь у меня инет пропал.
> Да необходимо создать EXE файл.
> Или можно сделать по другому, всунуть этот ЕХЕ файл в мою
> прогу, а потом высунуть, только как это сделать?
>
> Мужики, где можно прочитать про PE формат файлов? И где
> взять готове компиляторы/линкеры для генерации PE-файлов
> в ран-тайм?
>
> Поверьте очень нудно для работы.
ну так сразу бы и сказал ))) поищи в инете по словам "добавить,извлечь,ресурс,delphi" и все будет хорошо ...
Defunct (2004-02-15 18:43:00) [15]> Или можно сделать по другому, всунуть этот ЕХЕ файл в мою прогу, а потом высунуть, только как это сделать?
Просто вначале допиши готовый экзешник к первому. Можно Append в TotalCommander, можно самостоятельно - BlockWrite(_)/FileWrite(_).
Потом в процессе выполнения открываем собственный экзешник для чтения:
SysUtils.FileOpen(Application.ExeName, _режим_);
_режим_: 0-чтение, 1-запись, 2- чт/зап
Позиционируемся FileSeek(_) на оговоренную позицию (старая длинна EXE файла), читаем FileRead(_). Создаем новый EXEшник CreateFile(_), пишем то, что прочитали в него FileWrite(_), закрываем и запускаем созданный файл.
moor38 (2004-02-15 18:31:00) [16]Извиняюсь у меня инет пропал.
Да необходимо создать EXE файл.
Или можно сделать по другому, всунуть этот ЕХЕ файл в мою прогу, а потом высунуть, только как это сделать?
Мужики, где можно прочитать про PE формат файлов? И где взять готове компиляторы/линкеры для генерации PE-файлов в ран-тайм?
Поверьте очень нудно для работы.
Defunct (2004-02-15 17:00:00) [17]Anatoly Podgoretsky © (15.02.04 16:49) [5]
> Не относится
Это Вы так скажете Джордейну. Скрипт распознается на уровне командного процессора, так же как и EXE, значит BAT файл тоже относится к числу исполнимых. От том как именно система будет его исполнять: инетерпретировать или загружать с передачей управления, это другой вопрос.
Anatoly Podgoretsky © (15.02.04 16:50) [6]
> Да и никто не просил создавать BAT файл, наоборот формат четко указан, это должно быть именно EXE файл, и поверь, что речь идет не об расширении.
С учетом ответов [1], [2], [3] мнение автора об используемом формате может измениться. Причем в теле вопроса формат не указывается:
moor38 (15.02.04 15:19)
Т.е. работает моя программа и после некоторых условий необходимо создать исполняемый файл со своими задачами.
Anatoly Podgoretsky (2004-02-15 16:50:00) [18]Да и никто не просил создавать BAT файл, наоборот формат четко указан, это должно быть именно EXE файл, и поверь, что речь идет не об расширении.
Anatoly Podgoretsky (2004-02-15 16:49:00) [19]Не относится, это данные для интерпритатора.
Defunct (2004-02-15 16:37:00) [20]> ..а почитав про РЕ-формат и соотнеся все увиденное со своими сегодняшними знаниями на эту тему, ты бросишь эту бредовую затею и воспользуешься готовыми компиляторами/линкерами для генерации PE-файлов в ран-тайм
А разве только PE относятся к исполнимым файлам? Со своими сегодняшними знаниями он запрсто может создать BAT-файл, который тоже относится к числу исполнимых.