![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте. Вопрос таков:
Как запихнуть всяческие .dll'ы и .ехе'шники в одну программу? То есть, у меня имеется, допустим, .exe программы, и мне нужно, чтобы по нажатии кнопки в форме, этот .ехе запускался, и не откуда-то на компе, а из самой программы. Всмысле, чтобы на выходе у меня получился один .exe файл моей программы, а не файл моей программы и папка с .exe программ которые открываюся моей прогой. Надеюсь, что все понятно. З.Ы. Гыг, 7 раз использовал слово "программа" ![]() |
|
#2
|
||||
|
||||
|
SFX, ага?
![]() |
|
#3
|
||||
|
||||
|
Я думаю, он не SFX имеет ввиду.
Есть несколько вариантов для реализации даннной идеи. 1-ый вариант (самый простой): Требуется написать отдельную программу, которая бинарный файл переводит или в Base64, или в HEX, или в числовую последовательность. Результат работы программы заносится в массив в (отдельном) модуле в вашей программе. После пишется процедура преобразования данного массива (т.е. сохранения) его в файл. Все! Если интересует исходник, могу на файл. обменник залить. 2-ой вариант (посложнее): У каждого exe-файла есть сигнатура (несколько байт в конце), которые завершают программу, т.е. сам exe-файл. После этой сигнатуры можно писать чего угодно. А там уже ваш план реализации. Как один из вариантов, можно создать таблицу позиций в этом же файле, для последующего извлечения ваших сторонних. Просто прыгать по этим позициям, да копировать определенное кол-во байт в другой файл. Вроде так и устроены установщики. Но есть проблема, если ваша программа запущена, то Вы не сможете открыть exe для записи. Поэтому придеться написать еще одну программу для записи в ваш exe других данных. Исходника данной идеи у меня нет. |
|
#4
|
||||
|
||||
|
вогнать все в ресурс и из него по мере необходимости вытаскивать, сохраняя на диск в %TEMP% и оттуда же запускать.
|
|
#5
|
|||
|
|||
|
Цитата:
Думаю, он мне подойдет, ибо я чайник и к сложным вариантам как-то еще не тянет . Мне бы исходник и советы по адаптации его под мою программцу(что где изменить, как написать), если не трудно.Последний раз редактировалось Mikle, 05.07.2011 в 20:04. |
|
#6
|
|||
|
|||
|
Вариант с ресурсом проще.
|
|
#7
|
||||
|
||||
|
А мне кажется, что проще запаковать всё что надо в SFX, указать извлечение во временную папку и автозапуск нужного exe. И никакого секса с ресурсами.
|
|
#8
|
|||
|
|||
|
Ну, раз проще, может объясните как?=)
|
|
#9
|
||||
|
||||
|
Прикрепил к сообщению архив, содержащий два файла: exe (готовая программа) и dpr (исходный код). Программа не имеет окна, поэтому ее нужно запускать так: <путь>\exe2pas.exe "<бин. файл>". Программа все сделает и запишет в файл с тем же именем, только с расширением PAS.
|
|
#10
|
||||
|
||||
|
Ухихикался, обалденно нужная программа.
А вообще, как говорилось выше, способов решения задуманного масса. Каждый будет предлагать то, что ему больше нравится, поэтому ТС стоит определится какой вариант ему по зубам. Последний раз редактировалось angvelem, 06.07.2011 в 01:24. |
|
#11
|
||||
|
||||
|
angvelem, иногда эта программка полезна для меня. Часто в своих программах использую ее результат деятельности.
![]() |
|
#12
|
||||
|
||||
|
Цитата:
|
|
#13
|
||||
|
||||
|
Для запуска ехе с памяти можно использовать этот модуль Load_PE.rar. Там только шифрование убрать надо.
А запихнуть ехешку в файл способов много, но проще через ресурс. Вот пример: Exe in res.rar Вопрос зачем с памяти запускать? Если с винта в папке темп намного проще и 100% запуститься. Последний раз редактировалось AND_REY, 06.07.2011 в 11:11. |
|
#14
|
||||
|
||||
|
Можно все твои безбелушки закидать в ресурсы, а передавать им управление прямо из кода. Например можно вызвать ф-ю CreateProcess(Ex) а потом туда впиндюрить содердимое нужного тебе экзешника.
По запросу "запуск процесса из памяти" Googoolme выдает много интересного. добавлено спустя 3 наносекунды собственно AND_REY тебе так и изложил ![]() Последний раз редактировалось M.A.D.M.A.N., 06.07.2011 в 13:07. |
|
#15
|
||||
|
||||
|
Цитата:
|