Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как во время выполнения программы создать EXE файл? [D6, Win95/98, WinXP]


Страницы:   1 2

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-файл, который тоже относится к числу исполнимых.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо