Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.18;
Скачать: CL | DM;

Вниз

Запись в 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-59343
RV
2002-10-29 15:45
2002.11.18
Как Вам принтер MB4815?


1-59141
Lamerr_
2002-11-08 13:40
2002.11.18
Создание и удаление компонентов в run-time


3-58989
Just_Dont_Know
2002-10-28 18:21
2002.11.18
Медленно выполняется запрос...


3-59000
cd1
2002-10-28 21:34
2002.11.18
Извините за вопрос, кто-нибудь работал с TreeView в БД?


3-59055
KAA
2002-10-29 15:17
2002.11.18
2000 Запуск хранимой процедуры по таймеру.