Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКак во время выполнения программы создать EXE файл? Найти похожие ветки
← →
moor38 (2004-02-15 15:19) [0]Т.е. работает моя программа и после некоторых условий необходимо создать исполняемый файл со своими задачами.
← →
Digitman © (2004-02-15 15:28) [1]
> moor38 (15.02.04 15:19)
> Как во время выполнения программы создать EXE файл
исп.файл - такой же равноправный файл как и все другие файлы
чтобы создать файл, просто оздай объект TFileStream с FileName = "MyExeFile.EXE" и запиши в него нужную инф-цию методом WriteBuffer() .. всех делов
← →
DVM © (2004-02-15 15:34) [2]А о том, какая информация должня быть записана туда в первую очередь, можно узнать почитав про PE формат файлов.
← →
Digitman © (2004-02-15 15:45) [3]..а почитав про РЕ-формат и соотнеся все увиденное со своими сегодняшними знаниями на эту тему, ты бросишь эту бредовую затею и воспользуешься готовыми компиляторами/линкерами для генерации PE-файлов в ран-тайм
← →
Defunct (2004-02-15 16:37) [4]> ..а почитав про РЕ-формат и соотнеся все увиденное со своими сегодняшними знаниями на эту тему, ты бросишь эту бредовую затею и воспользуешься готовыми компиляторами/линкерами для генерации PE-файлов в ран-тайм
А разве только PE относятся к исполнимым файлам? Со своими сегодняшними знаниями он запрсто может создать BAT-файл, который тоже относится к числу исполнимых.
← →
Anatoly Podgoretsky © (2004-02-15 16:49) [5]Не относится, это данные для интерпритатора.
← →
Anatoly Podgoretsky © (2004-02-15 16:50) [6]Да и никто не просил создавать BAT файл, наоборот формат четко указан, это должно быть именно EXE файл, и поверь, что речь идет не об расширении.
← →
Defunct (2004-02-15 17:00) [7]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)
Т.е. работает моя программа и после некоторых условий необходимо создать исполняемый файл со своими задачами.
← →
moor38 (2004-02-15 18:31) [8]Извиняюсь у меня инет пропал.
Да необходимо создать EXE файл.
Или можно сделать по другому, всунуть этот ЕХЕ файл в мою прогу, а потом высунуть, только как это сделать?
Мужики, где можно прочитать про PE формат файлов? И где взять готове компиляторы/линкеры для генерации PE-файлов в ран-тайм?
Поверьте очень нудно для работы.
← →
Defunct (2004-02-15 18:43) [9]> Или можно сделать по другому, всунуть этот ЕХЕ файл в мою прогу, а потом высунуть, только как это сделать?
Просто вначале допиши готовый экзешник к первому. Можно Append в TotalCommander, можно самостоятельно - BlockWrite(_)/FileWrite(_).
Потом в процессе выполнения открываем собственный экзешник для чтения:
SysUtils.FileOpen(Application.ExeName, _режим_);
_режим_: 0-чтение, 1-запись, 2- чт/зап
Позиционируемся FileSeek(_) на оговоренную позицию (старая длинна EXE файла), читаем FileRead(_). Создаем новый EXEшник CreateFile(_), пишем то, что прочитали в него FileWrite(_), закрываем и запускаем созданный файл.
← →
KosilkA © (2004-02-15 18:56) [10]
> moor38 (15.02.04 18:31) [8]
> Извиняюсь у меня инет пропал.
> Да необходимо создать EXE файл.
> Или можно сделать по другому, всунуть этот ЕХЕ файл в мою
> прогу, а потом высунуть, только как это сделать?
>
> Мужики, где можно прочитать про PE формат файлов? И где
> взять готове компиляторы/линкеры для генерации PE-файлов
> в ран-тайм?
>
> Поверьте очень нудно для работы.
ну так сразу бы и сказал ))) поищи в инете по словам "добавить,извлечь,ресурс,delphi" и все будет хорошо ...
← →
moor38 (2004-02-15 19:07) [11]Defunct - Спасибо, общая схема понятна, далее попытаюсь разобраться самостоятельно.
KosilkA - да, догадаться было тяжело, спасибо.
← →
Alexander666 © (2004-02-16 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;
Мда, тут еще на сайте в одной из статей написано, как сувать ехе в ресурс. Открываешь Блокнот, а дальше:
MYEXE RCDATA
myexe.exe
Сохранил с расширением .rc, а потом уж каким-нить редактором ресурсов откомпилируй. Все просто.
Я еще пытался сделать запись ехе в ресурс другого ехе, но так и не получилось...
← →
Alexander666 © (2004-02-16 00:52) [13]Имелось в виду, чтобы программу написать, которая бы записывала ехе в ресурсы другого ехе.
← →
Digitman © (2004-02-16 08:08) [14]
> где взять готове компиляторы/линкеры для генерации PE-файлов
> в ран-тайм?
не поверишь, все это у тебя перед носом - в составе Делфи на твоей машине
← →
moor38 (2004-02-19 09:52) [15]
> 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;
Насколько я понял это сохранить ресурс как ЕХЕ файл, но для начала необходимо всунуть этот ЕХЕ файл в мою прогу, а как?
← →
Рамиль © (2004-02-20 20:40) [16]
> Alexander666 © (16.02.04 00:51) [12]
> MYEXE RCDATA
> myexe.exe
>
> Сохранил с расширением .rc, а потом уж каким-нить редактором
> ресурсов откомпилируй. Все просто.
← →
KosilkA © (2004-02-21 19:55) [17]
> moor38 (15.02.04 19:07) [11]
> KosilkA - да, догадаться было тяжело, спасибо.
видимо тяжело , потому что если б ты не поленился и набрал в поисковике то о чем я уже говорил , то нашел бы там то что написал тебе
> Alexander666 © (16.02.04 00:51) [12]
....
к слову , "как сувать ехе в ресурс" ...как там во всех советах написано ? ... берется блокнот, пишется чтото типа MYEXE RCDATA, потом brcc32.exe и т.д. и т.п.... не слюшайте эти вредные советы! в Дельфи, в меню "Project" есть пункт "Resources" , и там все это делается парой кликов мышь, что намного проще :-)
← →
Max003 (2004-02-21 20:05) [18]Могу официально заявить, что создать исполняемый файл во время выполнения программы реально, для этого надо всего лишь написать компилятор и текст программы. Могу дать кусок готовой программы. Сейчас. Ловите.
← →
Talla2k © (2004-02-22 01:52) [19]to Max003: Что-то не впоймали!
← →
moor38 (2004-02-24 23:14) [20]
> Max003 (21.02.04 20:05) [18]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально, для этого надо всего
> лишь написать компилятор и текст программы. Могу дать кусок
> готовой программы. Сейчас. Ловите.
Если не поленишся скинь мне на мыло moor38@yandex.ru
Буду очень благодарен.
← →
moor38 (2004-02-24 23:17) [21]
> Max003 (21.02.04 20:05) [18]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально, для этого надо всего
> лишь написать компилятор и текст программы. Могу дать кусок
> готовой программы. Сейчас. Ловите.
Если не поленишся скинь мне на мыло moor38@yandex.ru
Буду очень благодарен.
← →
DVM © (2004-02-24 23:33) [22]
> Могу официально заявить, что создать исполняемый файл во
> время выполнения программы реально
Да никто и не спорит. Делают же люди.
> для этого надо всего лишь написать компилятор
Всего лишь? Тоже официальное заявление. Вы Билл Гейтс?
← →
Cash © (2004-02-25 12:18) [23]А такой способ будет ли правильным.
Берем, создаем программу со скриптовым движком, которая читает скрипты из своего ресурса. Создаем основную прогу, кладем в нее (ресурс) скриптовую программу. Во время выполнения основной копируем из ресурса скриптовую прогу и кладем в нее (ресурс) созданный скрипт. Далее скриптовая прга ходит сама по себе.</I >
строго не судить, я с ресурсами недавно :)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.04 c