Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
ВнизЗапись в EXE Найти похожие ветки
← →
Soors (2002-11-05 21:52) [0]Как с помощью одной программы "редактора" изменять и сохранять данные в другой программе
← →
KSergey (2002-11-06 06:32) [1]Не в другой программе, а в некоем EXE-файле на диске, верно? Ну тогда опять же конкретизируйте в чем именно проблема - работа с EXE-файлами не отличается от работы с другими двоичными файлами: открываем на запись, позиционируемся, пишем, закрываем.
(только не надо спрашивать как записать в exe из которого запущено приложние, побьют, я буду в первых рядах; эта тема несколько раз обсуждалась здесь 2-3 дня назад)
← →
Semion (2002-11-06 08:21) [2]Ну я какраз обсуждал и ничего особеного непоня, вот только можно писать в ресурсы, а как это делать трудновато разобраться.
← →
KSergey (2002-11-06 11:56) [3]Не, ну вы ребята даете... А как бы самим хелп почитать?!
Ладно, специально для вас убил еще пол-дня (ну е совсем, но).
Ситуевина простая - ниже примерчик, но работает в WinNT/2k/XP. В Win9x таких ф-ций нет. Там видимо придется изучить формат PE-файла (что не сложно) - ну и ручками аккуратно все правит по необходимости. Тут я копаться не буду - сильно много времени нужно, а мне это сейчас не надо.
{******************************************************************************
* Пишем ресурсы
* (имя файла, в котором модифицируются ресурсы - такое же, но с двойным .exe,
* например: project.exe -> project.exe.exe)
******************************************************************************}
procedure TForm1.Button3Click(Sender: TObject);
var
Hr: THandle;
ModEXEName: String; // модифицированное имя этого exe-файла
s: String; // записываемая строка
procedure Err;
begin
raise Exception.Create ("Не вышло :(");
end;
begin
s := "Text для записи в ресурсы приложения";
ModEXEName := Application.ExeName + ".exe";
Hr := BeginUpdateResource (PChar(ModEXEName), FALSE);
if (Hr = 0) then Err;
if NOT UpdateResource (Hr, pChar("USERDATA"), pChar("TEXTDATA"), 0, pChar(s), Length (s)+1) then
Err;
EndUpdateResource (Hr, FALSE);
end;
Если кому интересно - кину весь проектик, куски из которого я тут "публиковал" (он из 3 ф-ций: чтение EXE сами себя (а то не все верили), чтение ресурсов из самом себя, запись ресурсов (модификация) в другом, не выполняемом сейчас (!) exe-файле).
PS Ну и это, кончайте наглеть, ищите сами в хелпах, а?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c