Главная страница
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.019 c
4-59486
@lexey
2002-09-23 22:44
2002.11.18
Как выключить блок АТХ под Windows XP


14-59369
RV
2002-10-25 10:50
2002.11.18
В шахматы играем?


4-59491
KidMan
2002-10-03 22:27
2002.11.18
onMouseOver над объектом Восстановить старое свойство caption


3-59006
Nemesis
2002-10-28 10:48
2002.11.18
Lock file has grown too large


3-59019
CrowD
2002-10-29 15:21
2002.11.18
Query из txt?