Вверх ↑
Этот топик читают: Гость
Ответов: 4
Рейтинг: 0
#1: 2006-09-05 22:05:25 ЛС | профиль | цитата
Всем привет!!!

У меня такой вопрос:
Можно ли с помощью хайасма "склеить" 2 exe файла чтобы при запуске запускались оба...

Попробовал сделать на примере схемы Galkov'a...
Чета ниполучается... =(((
Помогите пожайлуста!

Add(Button,14572570,301,105)
{
Left=20
Top=20
Width=130
Height=40
Caption="Выберите файл"
link(onClick,13579737:doExecute,[])
}
Add(ODialog,13579737,350,105)
{
link(onExecute,6849639:doOpen,[])
}
Add(FileStream,6849639,504,105)
{
Mode=2
Point(doPosition)
link(onLoad,13998894:doEvent1,[])
}
Add(Repeat,10592850,203,259)
{
Check=1
link(onRepeat,2007540:doEvent1,[])
}
Add(MemoryStream,15380892,413,182)
{
}
Add(For,887180,406,301)
{
IncludeEnd=1
link(onEvent,12847768:doGet,[])
link(End,3424195:Data,[])
}
Add(Hub,2007540,252,259)
{
OutCount=3
link(onEvent1,12521432:doData,[(300,265)(300,167)])
link(onEvent2,10592850:doStop,[(294,272)(294,248)(178,248)(178,272)])
link(onEvent3,887180:doFor,[(345,279)(345,307)])
}
Add(DataToFile,3424195,413,252)
{
Type=1
link(Stream,5944639:Var2,[])
}
Add(GetDataEx,5944639,406,224)
{
link(Data,15380892:Stream,[])
}
Add(DataToFile,12847768,455,294)
{
link(onGet,4398095:doPut,[])
link(Stream,5944639:Var3,[(461,233)])
}
Add(DataToFile,4398095,504,294)
{
link(Stream,6849639:Stream,[])
}
Add(Hub,13998894,546,105)
{
link(onEvent1,10592850:doRepeat,[(588,111)(588,91)(193,91)(193,265)])
link(onEvent2,6849639:doClose,[(588,118)(588,149)(493,149)(493,118)])
}
Add(MainForm,9059538,14,14)
{
Left=20
Top=105
Width=176
Height=112
}
Add(DoData,12521432,308,161)
{
link(onEventData,6849639:doPosition,[(422,167)(422,125)])
link(Data,6849639:Size,[(314,153)(517,153)])
}
Add(InfoTip,13184432,406,182)
{
Info=#15:Это второй файл|2:<=|
Width=183
Height=39
}

карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#2: 2006-09-05 22:25:07 ЛС | профиль | цитата
NewUser писал(а):
"склеить" 2 exe файла чтобы при запуске запускались оба...

Попробуйте переформулировать постановку.
Что бы можно было обойтись без экстрасенсов.
NewUser писал(а):
на примере схемы Galkov'a

Это не ссылка.
В данном виде, опять без экстрасенсов - затруднительно.

Ну и самое главное: схемы приводятся не с целью копирования их кусков, а чтобы можно было разобраться в их работе.
Как иначе - мне даже и непонятно.....
карма: 9

0
Ответов: 3655
Рейтинг: 69
#3: 2006-09-05 22:37:43 ЛС | профиль | цитата
Мне кажется так.
Add(WinExec,90859,350,154)
{
}
Add(WinExec,10491001,350,196)
{
}
Add(Button,12434498,224,175)
{
Left=245
Top=175
link(onClick,4784965:doEvent1,[])
}
Add(Hub,4784965,280,175)
{
link(onEvent1,90859:doExec,[(331,181)(331,160)])
link(onEvent2,10491001:doExec,[(331,188)(331,202)])
}

А что значит склеить вообще непонятно
карма: 0

0
Ответов: 4
Рейтинг: 0
#4: 2006-09-05 22:53:07 ЛС | профиль | цитата
Попробуйте переформулировать постановку.
Что можно было обойтись без экстрасенсов


Попробую переформулировать:
Хочу сделать программу для объединения двух EXE файлов в один. Чтобы после объединения запуск обоих программ происходил одновременно.

Существуют утилиты так называемые Joiner'ы... Их испльзуют для "склейки" файлов.
(даже незнаю как написать понятнее =( везде используется слово склеить...)

Joiner - англ. Столяр. От англ. join - скреплять, связывать. Такое название получил класс программ, предназначенный для соединения нескольких исполняемых файлов.

[size=-2]------ Добавлено в 22:53
Например есть файлы 1.exe и 2.exe, в результате работы Joiner'a будет создан файл 3.exe. Если мы запустим этот файл то запущенными окажутся две программы: 1.exe и 2.exe.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 689
Рейтинг: 20
#5: 2006-09-05 23:05:35 ЛС | профиль | цитата
А зачем? Честное слово первый раз с таким сталкиваюсь. Вот сколько уже лет с компами, ни разу в жизни не понадобилась такая ерунда. Предположим мы "склеим" 1.exe и 2.exe. Последовательность их запуска будет такая же? т.е. сначала 1, а потом 2? Если так, то зачем тогда склеивать? Пусть живут оба. а третий файл 3.exe по коду Вячеслава пусть их прекрасно запускает.

Можно еще вот так, создать файл 3.cmd, или 3.bat на диске:

call 1.exe
call 2.exe
карма: 0

0
Ответов: 655
Рейтинг: 0
#6: 2006-09-05 23:09:37 ЛС | профиль | цитата
"склеить??" можно если делать инсталятор
если только файл 3 будет устанавливать файл 1 и 2 запускать их а при закрытии удалять. но это уже на вирус похоже
карма: 0

0
Ответов: 8932
Рейтинг: 824
#7: 2006-09-05 23:14:40 ЛС | профиль | цитата
AVC,
но это уже на вирус похоже
с самого начала
карма: 19

0
Ответов: 9906
Рейтинг: 351
#8: 2006-09-05 23:30:58 ЛС | профиль | цитата
code_240
карма: 9

0
файлы: 1code_240.txt [1.3KB] [674]
Ответов: 3655
Рейтинг: 69
#9: 2006-09-05 23:38:34 ЛС | профиль | цитата
code_240
Во сколько вирусов можно запустить.
карма: 0

0
Ответов: 4
Рейтинг: 0
#10: 2006-09-05 23:39:30 ЛС | профиль | цитата
Ну зачем сразу вирус... Всегда так...

Существует много программ такого рода... И они далеко не вирусы... Многие даже платные...
Просто я хочу создать такую программу сам но с функциями нужными для меня...

Например штобы была возможность сохранения и загрузки проектов... Добавления в автозапуск...
Регистрация DLL,OCX...
Много еще что можно придумать...

Насколько я знаю написание файловых вирусов было неактуально как уже лет пять назад... Если не больше... И смысл??? Для чего??? Думаю глупо...
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4
Рейтинг: 0
#11: 2006-09-06 00:09:16 ЛС | профиль | цитата
Посмотрел код... К сожелению не то =(...

Поискал информацию...

Есть 2 способа реализовать:

Первый способ - это использование строковых констант, то есть берем файл, читаем его и создаем строки его содержимого, эти строки используем в модуле программы для записи обратно в файл.




#pas
function filetohex(infile:string):TStringList;
var
sl:TStringList;
myfile, leng : Cardinal;
i : Cardinal;
Buf : array [1..32] of Char;
s:string;
begin
sl := TStringList.create;
myfile:=_lopen(PChar(infile),OF_READ);
leng:=GetFileSize(myfile,0);
leng:=round(leng/16);

SL.Add('szBinary := '+#39#39+';');
while true do begin
FillChar(Buf,16,0);
leng:=_lread(myfile,addr(Buf[1]),16);
if (leng>16)or(leng=0) then break;
S:='';
for i:=1 to 16 do S:=S+IntToHex(ord(Buf[i]),2);
// SL.Add('szBinary = szBinary & "'+S+'"'); //for php
SL.Add('szBinary := szBinary + '+#39+S+#39+';');
end;
_lclose(myfile);
result:=SL;
end;

procedure hextofile(outfile:string);
var
t:text;
pos,len,ch :integer;
begin
szBinary := '';
szBinary := szBinary + 'BCCB131E2BC05089267101B430CD213C';
szBinary := szBinary + '027306BAF80EE9EB01E8A70AE8C40AE8';
szBinary := szBinary + 'E30AE8690AE9C6007000300030070000';
{. . .}
szBinary := szBinary + 'E001051F000000FE0900000000000000';

len:=length(szBinary);
pos:=1;
assignfile(t, outfile);
rewrite(t);
while pos<len do begin
ch:=strtoint('f'+copy(szBinary, pos,2));
write(t, chr(ch));
inc(pos,2);
end;
closefile(t);
end;

Второй способ - это подключение ресурсов. Например: {$R наш_ресурс.RES} Где наш_ресурс.RES - скомпилированный следующим образом ресурс:
Создаем файл .rc следующего содержания:

any_exe_file EXEFILE any_exe_file.exe

Компилируем с помощью программы, входящей в комплект Delphi, brcc32.exe:

brcc32.exe file.rc

Получаем file.res и подключаем в проекте : {$R file.RES} Размер скомпиленного файла конечно сразу вырастает на размер res файла. Для извлечения из ресурса используем процедуру:



#pas
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
try
Res.SavetoFile(ResNewName);
except
end;
Res.Free;
end;

Используем следующим образом:

ExtractRes('EXEFILE', 'any_exe_file', 'путь_куда_извлечь\any_exe_file.exe');


Тока не знаю как это реализовать в хайасме...
Знаю что можно с помощью компонента "InlineCode" (Вставка кода от делфи.)
Тока у меня не получается... Я новичок...

Может первый способ можно реализовать средствами хайасма... Т.е. без вставки кода... Низнаю...

Помогите пожайлуста!!!
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#12: 2006-09-06 06:50:58 ЛС | профиль | цитата
NewUser писал(а):
Посмотрел код... К сожелению не то =(...

1) что такое посмотрел
2) с какой радости не то - на сто пудов соответствует заказанному

NewUser писал(а):
Есть 2 способа реализовать

Не вопрос - существует много способов вырезать гланды...
карма: 9

0
Гость
Ответов: 17029
Рейтинг: 0
#13: 2006-09-06 07:41:37 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2025-01-09 06:16:27
карма: 0

0
Ответов: 96
Рейтинг: 0
#14: 2006-09-06 22:28:22 ЛС | профиль | цитата
Странно.... Первый раз слышу, что джойнеры применяются в народном хозяйстве. Это даже не технология двойного назначения, это стопудовый кулхацкер-tool.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#15: 2006-09-06 22:44:50 ЛС | профиль | цитата
Ну как же стопудовый... Сказано же: К сожелению не то =(...
карма: 9

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)