PDA

Показать полную графическую версию : Как запустить любой файл внутри exe?


fooger
08-01-2011, 17:59
Здравствуйте. Нужно при запуске exe файла запустить любой файл внутри exe, это может быть как и картинка, так и exe файл. Как и на каком языке программирования это возможно сделать? Не нужно никакого извлечения файлов куда-то, и не нужно никакого интерфейса, все должно происходить в silent (скрытом, невидимом) режиме. Большое спасибо.

Beyound
08-01-2011, 19:34
слабо понятно что ты хочешь, особенно твое silent - но почитай про это например ShellExecute
язык не важен - главное подключить нужную библиотеку.

Wily
08-01-2011, 19:54
Ну конечно,язык не важен..?! Еще как важен.


Я понимаю открыть изображение или звук из самой программы,но как запустить исполняемый файл..?!
Может быть я конечно чего-то и не знаю,но по моему его нужно сначала извлечь что бы запустить.

Любезный
08-01-2011, 20:00
Поясните, что имеется в виду. Извлечь файл из ресурса и запустить, или открыть другой внешний файл?

fooger
08-01-2011, 20:34
Всем спасибо, попытаюсь объяснить. Нужно следующее
Создать exe файл.
При его запуске (двойной клик или enter), этот файл должен запустить указанный ранее файл в середине себя. Например в exe -- есть файл "image.jpg". При запуске exe нужно запустить файл в середине себя "image.jpg", если возможно (а я думаю что возможно), то без извлечения файла "image.jpg" куда-то. Также нужно чтобы вместо файла "image.jpg", мог быть любой другой файл, например: "audio.mp3" или "program.exe".
То что я писал silent - это значит чтобы ничего при этом на экран не выводилось.
Как это осуществить?

Любезный
08-01-2011, 21:09
Это как? Чтобы jpg открылся и при этом не отобразился? *****так?

Wily
08-01-2011, 21:17
Вот и я про то же,зачем открывать изображение в скрытом виде..?!

Если нужно запустить файл в скрытом виде,используйте "ShellExecute" как сказал Beyound.
В справочнике по WinApi есть описание..!

Прочтите тут (http://www.delphiexpert.ru/view_winapi.php?id=598)..

Любезный
08-01-2011, 21:18
Думаю, ЛЮБОЙ файл без извлечения не запустить - нет гарантии, что, например, exe будет адекватно работать, если, например, он что-то пишет в собственный каталог..

fooger
09-01-2011, 17:33
В скрытом виде должна работать только сама "родительская" exe. То есть в случае ошибки или еще чего-то там чтобы на экран ничего не выводилось, а то мне даже уже и сделать инсталляхой с интерфейсом предлагали)).
Любезный, писать в собственный каталог ничего не нужно, только чтение.
Все что должна делать exe-ха это запускать файл в середине себя (очень желательно без извлечения!). Запуск чего-то должен происходить штатными средствами, например как функция start в батнике. Чтобы изображение открывалось в установленном по умолчанию просмотрщике, аудио в своем плеере и т.д.
Есть такие программы джойнеры называются. В основном их используют для склейки файлов, например изображения с вирусом.
И при запуске файла который с генерировала программа, оно запускает указанные в середине два(или больше) файла-ов, и я думаю что вряд ли перед запуском этих файлов, exe-ха их куда-от извлекает. Джойнеры это где-то отдаленно то что мне нужно, но они мне не подходят по нескольким причинам:
Все джойнеры палятся антивирусами, из за их назначения. Ними все склеивают вирусы, а мне этого(склеивать с вирусом) не нужно.
Во вторых мне нужно не для двух и больше файлов.
В третьих все немного проще мне нужно, чем то что они делают...

Кстати я не программист, по этому помогите с кодом пожалуйста... я только веб-программист. Буду очень благодарен.

Delirium
11-01-2011, 01:09
Любезный, первое предупреждение за некорректные выражения на форуме.
fooger, создаем консольный проект на том же С# - в проект добавляем нужный файл и в свойствах файла (копирование при построении) - выставляем "встраиваемый"/"Embedded". В таком случае файл будет встраиваться в exe при компиляции. В коде запускаем выполнение файла через ShellExecute.

fooger
11-01-2011, 12:29
Delirium, большое спасибо, по моему то что надо, но можно чу-чуть по подробнее, так как я не программист..?
Если можно и не сложно, то напишите код пожалуйста, я не думаю что он длинный)
P.S. в какой программе писать нужно код?

Drongo
11-01-2011, 18:09
fooger, [решено] Кирилица в WIN32 GUI приложениях независимо от настроек в контрольной панели (http://www.forum.oszone.net/thread-145085.html) -> с 14-го по 19-й комментарии.

wint1000
13-01-2011, 22:20
Привет fooger. Так как вы програграммист, хотя и не в более "кодовых" языках, если их можно так назвать, но стиль программирования вы должны понимать. Это меня удивило. Как и зачем вам кусок кода. Языков ведь несколько. И каждая такая часть кода должна быть оптимизированна со своим языком. Более того такие "ссыли" привязанны ко всей программе по определённым правилам. В плюсах, ссылка на открываемый файл и т.д. На вопрос можно ли сделать? Можно почти всё. Главное что бы написать код надо знать, каким образом открыть. Вы ведь просто запустите внешний код. Про запуск функции, вообще прописанно в азах программирования. Функция может запустить хоть саму себя. Пишеш ВЫЗОВ с параметрами, какими хочеш внутри основного тела и компилятор создаст копию точно такой же функции. И т.д. Любое обращение, пожалуйста. Хоть скрыто (подразумевается без окна) хоть открыто. Но часть кода, написанная любым человеком, без всего кода (если, как пишите - непрограммист) будет просто лиш набором знаков.

fooger
18-01-2011, 18:16
Привет wint1000. Я программирую на PHP, JavaScript(AJAX), HTML, CSS. Стиль программирования я кончено понимаю, но допустим если есть какой-нибудь батник, то разобрать что в нем написано - я еще смогу(и даже минимально подправить его под себя), но сам написать не смогу.
Я не понимаю что Вас удивило, в том что я нуждаюсь в данном коде?
Мне все равно на каком языке программирования это будет написано (C++,C#,Delphi и т.д.), главное что бы работало. Насколько я понимаю - то что мне требуется скорее всего занимает лишь пару строк кода, и в нем практически нечего "оптимизировать", если его конкретно писать на конкретном языке. Если кто-то бы мне написал такой код (за что я был бы очень благодарен этому человеку), то я понимаю что выглядело это бы так:
Я открываю программу компилятор, добавляю туда свой нужный файл, добавляю код, в коде вместо названия того файла что там стоял - меняю на свой, и компилирую.
На вопрос можно ли сделать? Можно почти всё. » - мне в некоторых форумах писали что файл без извлечения ну никак не запустить ))
Мне кажется я только одно не правильно написал, то что мне нужен кусок кода, на самом деле мне нужен целый код, так как я не смогу дописать кусок кода, потому что не умею (надеюсь пока что). ...

Admiral
18-01-2011, 18:54
fooger, да, без извлечения никак, но извлекать то можно и в ОЗУ. Вот только запуск (да и извлечение) программ оттуда не всегда нравится антивирусным программам.
К примеру вот статья на эту тему http://www.wasm.ru/article.php?article=memfile
Больше материала даст поиск по Запуск исполняемого файла из памяти.

По изображению(.jpg) и аудио файле(.mp3) можно было что-то придумать (есть библиотеки которые способны читать прямо из памяти - Gdi+ и Bass соответственно), но при таком условии
Чтобы изображение открывалось в установленном по умолчанию просмотрщике, аудио в своем плеере и т.д. »
без сохранения на диск это будет затруднительно.

fooger
18-01-2011, 23:56
Спасибо. Admiral, а то что написал Delirium, fooger, создаем консольный проект на том же С# - в проект добавляем нужный файл и в свойствах файла (копирование при построении) - выставляем "встраиваемый"/"Embedded". В таком случае файл будет встраиваться в exe при компиляции. В коде запускаем выполнение файла через ShellExecute. » - это с извлечением или без?

Admiral
19-01-2011, 01:05
fooger, да - (копирование при построении). При чём если не отмечать, файл хоть и будет в ресурсах его нельзя будет запустить - Shell/ShellExecute не поддерживает запуск с ресурсов. Так что придётся это сделать самостоятельно.

Delirium
19-01-2011, 01:08
fooger, в ЛЮБОМ случае будет идти извлечение, просто в моем примере это будет происходить в невидимом режиме, ну и самого встроенного EXE не будет отдельным файлом. А извлечение будет проходить. Чтобы запустить программу, её надо обработать системе, хотя бы для того, чтобы понять, ЧЕМ её запускать.




© OSzone.net 2001-2012