Страница 1 из 2
Exe-шники в Delphi
Добавлено: 28 янв 2007, 19:06
Сейчас_не_спящий
Можно ли в проект Delphi внедрить ЕХЕ-шник другой программы? Именно не сделать ссылку, а внедрить, чтобы после компиляции проект не требовал экзешник внедрённой программы.
Возможно ли это, если да, то как?
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 08:51
Duncon
Думаю возможно, поройся в сторону файлов ресурсов..
Или как вирус дописать к готовому exe в этом случае он будет запускаться вместе с основным...
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 09:54
SergeyS
Ну ты даёшь задачки! А зачем тебе это нужно? Какая хоть задача стоит?
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:00
Сейчас_не_спящий
Идей было, много, но хотя бы один пример..
Или даже если не вшить ЕХЕшник, то как открыть его? Например, Total Commander.exe:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm} //как понимаю тут прописать что-то типа {$R TotalCommander.exe}
procedure TForm1.Button1Click(Sender: TObject);
begin
// Тут операции по открытию Тотал Коммандера, какие? как это реализовать, в
//учебниках этого нету, а в процессе разработки требуется.
end;
end.
Если есть идеи пропишите их, буду весьма признателен
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:03
Сейчас_не_спящий
" писал(а):Ну ты даёшь задачки! А зачем тебе это нужно? Какая хоть задача стоит?
Нужно для души, хочу стать спецом, я вообще-то экономист, мне программирование по профессии не нужно, а для души само то=).
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:23
somewhere
Его надо тогда вытащить из ресурсов, запихать в файл где-нить в темпе и выполнить - если только так.
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:27
Сейчас_не_спящий
" писал(а):Его надо тогда вытащить из ресурсов, запихать в файл где-нить в темпе и выполнить - если только так.
Это как? Ты имеешь в виду запихать в память как обчный строковый файл? Или?..
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:32
LAngel
Сейчас_не_спящий писал(а):Нужно для души, хочу стать спецом, я вообще-то экономист, мне программирование по профессии не нужно, а для души само то=).
Коллега

)) Я тоже экономист по специальности, только работаю инженером-программистом.
Внедрить в ресурсы можно все, что угодно.
Открывай ресурс-эдитором *.res файл из проекта, пихай туда все, что нужно
(Вот, пример из моей проги, в которой используются функции сжатия из zlib1.dll, она лежит в ресурсах и если не найдена "распаковывается" из главного exe'шника)
[syntax="delphi"]procedure ExtractZLIB;
var
St: TResourceStream;
begin
St := TResourceStream.Create(HInstance, 'ZLIBDLL', 'BINARY');
try
with TFileStream.Create('.\zlib1.dll', fmCreate) do
try
CopyFrom(St, St.Size);
finally
Free;
end;
finally
St.Free;
end;
if not FileExists('.\zlib1.dll') then
Raise Exception.Create('Fatal Error: Can''t extract zlib1.dll');
end;[/syntax]
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:34
SergeyS
Вот кусок кода используемый мною в различных целях вызова внешних exe-шников:
Код: Выделить всё
function ExecuteCommand(Command: String): Cardinal;
var
Rlst: LongBool;
StartUpInfo: TStartUpInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0);
with StartUpInfo do
begin
cb := SizeOf(TStartUpInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := SW_SHOWNORMAL;
end;
Rlst := CreateProcess(nil, PChar(Command), nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
if Rlst then
with ProcessInfo do begin
WaitForInputIdle(hProcess, INFINITE); // ждем завершения инициализации
WaitforSingleObject(ProcessInfo.hProcess, INFINITE); // ждем завершения процесса
GetExitCodeProcess(ProcessInfo.hProcess, Result); // получаем код завершения
CloseHandle(hThread); // закрываем дескриптор процесса
CloseHandle(hProcess); // закрываем дескриптор потока
end
else Result := 0;
end;
где Command - есть выполняемая строка, может быть с параметрами и без
Re: Exe-шники в Delphi
Добавлено: 29 янв 2007, 10:37
SergeyS
ну накой надо пихать их в exe'шник? Зачем, пусть лежит рядышком.
Конечно, ради искусства можно и запихать, но зачем?