Копировать файл exe с Ресурса к памяти ОЗУ и выполнять это в Дельфи 10.3, [закрывший]

Существует пример на этой странице, которая это приносит польза в delphi 7, но мне нужно, чтобы функционировал в Дельфи 10.3 Рио, пожалуйста он помогает с этим, я это напечатал в stackoverflow на английском, но, как кажется, они не поняли мой вопрос. Спасибо заранее.

1
задан 30.09.2019, 21:20
1 ответ

Для prГіximas случаи estarГ - в добро, что ты давал mГЎs данные из примера, который функционирует , и porquГ© оно не функционирует в новых версиях .

Процедура, которую ты объясняешь, - простая и deberГ, - чтобы функционировать равно для любого типа файла, будьте изображением или одной aplicaciГіn. Шаги - следующие:

Сначала ты должен создаешь файл таких ресурсов (RECURSOSVARIOS.RC) как этот:

// Recursos para imágenes
MINION          RT_IMAGE   ".\minion.jpg"
// Recurso para un EXE
DUMMYAPP        RT_RCDATA  ".\DummyApp.exe"

В continuaciГіn ты это составляешь с CMD как этот (RC.CMD):

brcc32 RecursosVarios.rc > Errores.txt

Это производит файл RECURSOSVARIOS.RES, которые ты должен aГ±adir в твой DPR со следующей lГ-nea:

{$R RecursosVarios.RES}

, Чтобы извлекать ресурсы EXE и записывать их к диску, использует класс TResourceStream и cГіdigo смоги быть этим:

var
  RecursoStream: TResourceStream;
  path:String;
begin
  // Para la imagen
  RecursoStream := TResourceStream.Create(HInstance, 'MINION', 'RT_IMAGE');
  try
    RecursoStream.Position := 0;
    // Nombre del fichero destino
    path := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'YourImage.jpg';
    RecursoStream.SaveToFile(path);
  finally
    RecursoStream.Free;
  end;
  // Cargarla en el form
  Image1.Picture.LoadFromFile(path);

  // Para el EXE
  RecursoStream := TResourceStream.Create(HInstance, 'DUMMYAPP', 'RT_RCDATA');
  try
    RecursoStream.Position := 0;
    path := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)) + 'YourApp.exe';
    RecursoStream.SaveToFile(path);
  finally
    RecursoStream.Free;
  end;
  // ejecutar la aplicación
  ShellExecute(Handle, 'open', PChar(path), nil, nil, SW_SHOW);

В обоих случаях, загружает ресурс и сохраняет к диску. Позже изображение загружается в компоненте и она aplicaciГіn он работает.

introducir la descripción de la imagen aquí

ВАЖНОЕ ЗАМЕЧАНИЕ: Уже предупредил тебя, что, хотя процедура функционирует, как ты можешь видеть, возможно, что во многих командах у тебя есть проблемы с anivirus и приложения безопасности. Поскольку его нормально, "no suele gustarles" в suites безопасности и сходных программ, чтобы одна aplicaciГіn (EXE) извлек другой EXE Ваших ресурсов, это записал к диску и это выполнил. Достаточно вероятно, что они блокируют твою программу, и что они удаляют EXE ресурса после того, как это извлекли и первоначальный EXE; Что это пометили как вирус и даже, что ты не смог выполнять это (сшейте с другой стороны достаточно lГіgica).

1
ответ дан 01.12.2019, 16:05