Главная страница
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.023 c
14-59362
AL2002
2002-10-29 15:31
2002.11.18
Сжималка ехешника


14-59355
Driverrr
2002-10-18 18:50
2002.11.18
FORMAT C:


14-59398
DDS
2002-10-28 09:41
2002.11.18
Чудеса с монитором.


3-59026
Cyril
2002-10-29 19:38
2002.11.18
Можно ли упаковать foxpro таблицу используя ADO


1-59193
Мазут Береговой
2002-11-06 07:14
2002.11.18
как правильно открывать MS WORD в приложении Delphi, что бы он по