Добавить EXE файл в своё приложение и запустить его
1.
Start notepad and create a .rc-file that looks like this:
Starte Notepad und erstelle ein .rc-file, das etwa so aussieht:
TESTFILE EXEFILE C:\Windows\Notepad.exe
(Make sure that the Path to your Exe-File is correct!)
(Stelle sicher, dass der Pfad zur Exe-Datei korrekt ist!)
2.
Save it as myres.rc
Speichere es als myres.rc
3.
Compile the file with brcc32.exe
(in your Delphi-bin directory) to get myres.res
Kompiliere die Datei mit brcc32.exe
(Im Delphi-bin Verzeichnis) um die Datei myres.res zu erhalten.
4.
Copy myres.res to your Project directory.
Kopiere myres.res in das entsprechende Projekt-Verzeichnis.
5.
In your unit write the following:
In der unit, schreibe etwa das folgende:
var
Form1: TForm1;
NOTEPAD_FILE: string;
implementation{$R *.DFM}{$R MYRES.RES}function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
GetTempPath(SizeOf(Buffer) - 1, Buffer);
Result := StrPas(Buffer);
end;
// Extract the Resource function ExtractRes(ResType, ResName, ResNewName: string): Boolean;
var
Res: TResourceStream;
begin
Result := False;
Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType));
try
Res.SavetoFile(ResNewName);
Result := True;
finally
Res.Free;
end;
end;
// Execute the file procedure ShellExecute_AndWait(FileName: string);
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo dobegin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) thenbegin
Ph := exInfo.HProcess;
endelsebegin
ShowMessage(SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
end;
// To Test it procedure TForm1.Button1Click(Sender: TObject);
beginif ExtractRes('EXEFILE', 'TESTFILE', NOTEPAD_FILE) thenif FileExists(NOTEPAD_FILE) thenbegin
ShellExecute_AndWait(NOTEPAD_FILE);
ShowMessage('Notepad finished!');
DeleteFile(NOTEPAD_FILE);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
NOTEPAD_FILE := GetTempDir + 'Notepad_FROM_RES.EXE';
end;
Добавить EXE-файл в своё приложение и запустить его: создайте .rc-файл, скомпилируйте его в ресурс, добавьте ресурс в проект, извлеките EXE-файл из ресурса и запустите его с помощью функции ShellExecute.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.