Показать сообщение отдельно
  #12  
Старый 15.11.2007, 05:05
Аватар для Volkogriz
Volkogriz Volkogriz вне форума
Прохожий
 
Регистрация: 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
MessagesSysUtilsClassesGraphicsControlsFormsDialogs,
StdCtrlsExtCtrls,ShellAPI;

type
TForm1 
= class(TForm)
Panel1TPanel;
Button1TButton;
Button2TButton;
Button3TButton;
Button4TButton;
procedure Button4Click(SenderTObject);
procedure Button1Click(SenderTObject);
procedure FormCreate(SenderTObject);
procedure FormClose(SenderTObject; var ActionTCloseAction);
procedure Button2Click(SenderTObject);
procedure Button3Click(SenderTObject);
private
{ Private 
declarations }
public
{ Public 
declarations }
end;

var
Form1TForm1;

implementation

{$R *.DFM}
{
$R Chess.RES}//Это и есть наш Chess.exe

//Процедура извлечения
procedure ExtractRes(ResTypeResNameResNewName String);
var
Res TResourceStream;
begin
Res 
:= TResourceStream.Create(HinstanceResnamePchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
//Пример простого запуска программы! И ожидание завершения процеса!
procedure TForm1.Button4Click(SenderTObject);
var
si Tstartupinfo;
Tprocessinformation;
//Запускаем
begin
FillChar
SiSizeOfSi ) , );
with Si do begin
cb 
:= SizeOfSi);
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(SenderTObject);
var
si Tstartupinfo;
Tprocessinformation;
//звлекаем
begin
ExtractRes
('exe''Chess''We Extract/Chess.exe');
//Запускаем
begin
FillChar
SiSizeOfSi ) , );
with Si do begin
cb 
:= SizeOfSi);
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(SenderTObject);
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'+' //D={tmp', nil, SW_SHOW);
end;
//Закрываем
procedure TForm1.Button3Click(Sender: TObject);
begin
Close
end;

end. 

Исходник целиком!
За рание блогодарю!!!
С уважением Volkogriz!!!
Ответить с цитированием