15.11.2007, 05:05
|
|
Прохожий
|
|
Регистрация: 02.11.2007
Сообщения: 5
Репутация: 10
|
|
Доброе время суток!
Помогите разобраться!!!!
Мне нужно создать DLL-ку с ресурсами и по заказу главного приложение извлекать из неё оприделённый ресурс!
На пример:
Открываем главное приложение жмём на кнопку рисунок_1 и из DLL-ки извлекается в указоную папку например 1\2\3\рисунок_1.bmp и всё приложение само им вертит как хочет на пример ставит на фон рабочего стола и т.д!
Так же с музикой и с другими файломи какие я внису в .RES файл!
Или подобное приложение как написать чтоб оно работало по таму-же принципу нужно чтобы всё происходило в тихую в фоновам режиме!
Нужно именно модуль к главному приложению иначе моё приложение будит весить 2.5 гига!
Раньше я делал так может кого и заинтерисует:
Отрывок с форума programmersforum тим и исходник я кидал !
Цитата:
Если надо засунуть exe или другой какой либо файл из приложения !
надо вставить его в ресурс и
откомпилить компилятором ресурсов. Далее читать из ресурса своего EXE-файла.
Как это зделать:
Пример:
Создать с помощью блокнота Файл обозвать его Program.rc
Пишем в него Program exe C:\Program.exe и сохраняем его!
Далие открываем "C:\Program Files\Borland\Delphi\bin"
и находим там файл brcc32.exe капируем в папку с Program.rc!
Создаём Program.bat открываем с помощю текст редактора пишем :
brcc32.exe Program.rc И сахраняем!
Program.exe должна нахадитс в ириктории C:\Program.exe для избежании ошибки в пути!
Запускаем Program.bat получаем Program.RES !!!!
Далие В проэкте пишем:
|
PHP код:
unit Unit1;
//*Прозьба на орфографию внимание необрощать!!!
//*Если что не понятно спросить!!!
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls,ShellAPI;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R Chess.RES}//Это и есть наш Chess.exe
//Процедура извлечения
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
//Пример простого запуска программы! И ожидание завершения процеса!
procedure TForm1.Button4Click(Sender: TObject);
var
si : Tstartupinfo;
p : Tprocessinformation;
//Запускаем
begin
FillChar( Si, SizeOf( Si ) , 0 );
with Si do begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
//Ждём
Application.Minimize;
Createprocess(nil,'Chess/Chess.exe',nil,nil,false,Create_default_error_mode ,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
Application.Restore;
end;
//Пример запуска программы из ресурсов! И ожидание завершения процеса!
procedure TForm1.Button1Click(Sender: TObject);
var
si : Tstartupinfo;
p : Tprocessinformation;
//звлекаем
begin
ExtractRes('exe', 'Chess', 'We Extract/Chess.exe');
//Запускаем
begin
FillChar( Si, SizeOf( Si ) , 0 );
with Si do begin
cb := SizeOf( Si);
dwFlags := startf_UseShowWindow;
wShowWindow := 4;
end;
Application.Minimize;
Createprocess(nil,'We Extract/Chess.exe',nil,nil,false,Create_default_error_mode ,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
Application.Restore;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateDir('We Extract\'); //Соэдаём директорию при открытии фармы
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DeleteFile('We Extract/Chess.exe'); //Удаляем файл при закрытии формы
begin
RemoveDir('We Extract\'); //Удаляем директорию при закрытии формы
end;
end;
//Запуск из камандной строки!
procedure TForm1.Button2Click(Sender: TObject);
begin //Запуск из командной сроки с ключами /C/S/D={tmp}
ShellExecute(Handle, nil, 'Chess/Chess.exe', '/c'+' /S /D={tmp} ', nil, SW_SHOW);
end;
//Закрываем
procedure TForm1.Button3Click(Sender: TObject);
begin
Close
end;
end.
Исходник целиком!
За рание блогодарю!!!
С уважением Volkogriz!!!
|