Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.012 c
4-59481
Beginer1
2002-10-07 16:35
2002.11.18
FindFirstFile


14-59348
Igorek
2002-10-25 10:40
2002.11.18
Непереведенные издания


1-59258
Azbul
2002-11-07 11:07
2002.11.18
проблема с чтением файла


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


8-59291
login2
2002-07-30 11:18
2002.11.18
Работа с палитрой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский