Запись в .ехе

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Запись в .ехе

Сообщение revers » 05.02.2005 (Сб) 9:38

:!: Здравствуйте. помогите пожалуйста новичку.
Проблема заключается в следующем - имеется проект, в котором серверная часть должна конфигурироваться уже после компиляции (т.к. конфигурация будет отличаться), сооветственно необходим конфигуратор, который мог бы делать "append", точнее не append, а нужную вставку в готовый exe файл, ничего не нарушая. как это сделать, ума не приложу. Пробовал юзать проги для сравнения двух файлов, но разница получается довольно внушительная при 2 компиляциях, отличающихся всего то в 1 символ (в исходниках), а если прикинуть, что там будет символов 200, то ето надо будет очень долго править.(кстати, ещё интересно то, что размер .ехе файлов не меняется) Возможно, кто нибудь сталкивался с такой проблемой, или может есть какие нибудь варианты, API, ещё что-нибудь... Заранее благодарен за помощь. :?:

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.02.2005 (Сб) 10:25

Зачем такой странный метод? Нельзя пойти проверенным путем - создать файл конфигурации (в виде .ini, например), и считывать данные exe-шником из него, а не переписывать сам exe-шник?
Быть... или не быть. Вот. В чём вопрос?

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 10:58

Да, понимаешь, uhm, в том то и дело, что нет. Если с файлом работать - оно и понятно, что легче, причем, как видно, гораздо, но если б проект позволял работу с более чем 1 файлом, я не задал бы вопрос. (я новичёк, но файл открыть я могу=) не думай, что совсем дуб...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 05.02.2005 (Сб) 11:20

А реестр? :roll:

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 11:42

Реестр тоже не покатит, т.к. конфигурировать надо на одной машине, а работать программа будет на другой, и , соответственно RegOpenKeyEx и все остальное летит в тартарары... Я долго думал - самое реальное решение - как нибудь записать конфиг в .ехе, хотя это сложно, но это реально, т.к. я видел прогамму, которая по такому принципу и работала, но она на C, и к сожалению, её исходников нету.

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 05.02.2005 (Сб) 11:50

revers писал(а):Реестр тоже не покатит, т.к. конфигурировать надо на одной машине, а работать программа будет на другой, и , соответственно RegOpenKeyEx и все остальное летит в тартарары... Я долго думал - самое реальное решение - как нибудь записать конфиг в .ехе, хотя это сложно, но это реально, т.к. я видел прогамму, которая по такому принципу и работала, но она на C, и к сожалению, её исходников нету.

тогда я не понимаю почему надо усложнять все и записывать в EXE? Какая разница записывать в файл или в ЕХЕ (ну разве что в сложности :wink: )
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 11:59

_Мика_, выше я писал:
"но если б проект позволял работу с более чем 1 файлом, я не задал бы вопрос", так именно по этой причине так ВАЖНО писать в .ехе

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 05.02.2005 (Сб) 12:05

revers писал(а):_Мика_, выше я писал:
"но если б проект позволял работу с более чем 1 файлом, я не задал бы вопрос", так именно по этой причине так ВАЖНО писать в .ехе
В смысле структура программы не позволяет работать с более чем одним файлом?
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 12:14

_Мика_, нет, в смысле опять же выше я писал про то, что конфигурироваться программа будет на одном компьютере, работать на другом, конфигурации будут разными для разных компьютеров, плюс нет возможности раздавать компьютерам по 2, 3, 4, 5 , итд файлов. есть возможность только раздавать по 1 файлу каждому с разными конфигурациями, при этом, заранее говорю, на "раздаваемых" машинах, а также на "принимаемых" машинах отсутствует компилятор VB, итд итп. то есть условие задачи - записать в нужное место .ехе сохранив его работоспособность.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 05.02.2005 (Сб) 12:57

У меня есть предположение, что дописывать можно в инфу об ЕХЕ, например, в Comments. Но тогда надо делать какую-то прогу, которая будет менять эти самые Comments... Короче, можно попробовать сделать так:
1) Делаем прогу (далее - change.exe), которая изменяет Comments в заданном EXE-файле на данные
2) Запихиваем ее в ресурсы нашей проги
3) В нашей программе по команде "сохранить" та прога распаковывается, генерируется БАТник, запускается, наша прога закрывается, БАТник делает то, что надо (внутри него команда типа "change.exe <имя нашего ехе> <на что поменять Comments>"), наша прога запускается
4) Наша прога читает данные из App.Comments и распознает их.

Вот только я не знаю, как реализовать 1 пункт... :(

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 13:21

да это вариант, но мне кажется, можно как то сделать проще, плюс, не так много там строк инфы о файле, плюс прийдется потом резать это, если в троку все записывать... ну в общем прийдется сделать так, если не найдется ничего другого..., но ваще должен быть вариант другой. Спасибо большое за ответ.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 05.02.2005 (Сб) 13:22

Разве я упоминал дубы? :roll: :D
Может, ты поподробнее опишешь то, что собираешься сделать (не только про exe-шник, а про то, что вообще происходит)? Мне почему-то кажется, что все-таки ситуация не так безнадежна и можно найти способ попроще.

Впрочем, боюсь, что придумывать будет уже кто-то другой, я на неделю улетаю от компов :D

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 05.02.2005 (Сб) 13:25

Насколько я понял,
1) Имеются несколько компов
2) Наша прога по очереди будет запускаться на каждом компе
3) Все настройки должны копироваться, при этом кроме 1 ехе'шника ничему копироваться нельзя.

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 05.02.2005 (Сб) 13:36

A.A.Z. да.
uhm и все остальные, кажись я нашел ответ... может и не получится..
в общем вариант мой такой : пишется конфигуратор, в котором юзаются 2 API:
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function SetEndOfFile Lib "kernel32.dll" (ByVal hFile As Long) As Long
то есть указываем что конец файла .ехе
- его конец, который есть сейчас, а потом open file.exe for append as #1......

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 05.02.2005 (Сб) 14:08

Хм, а мой вариант с комментсами работает :) Всё ОК :)
revers, если еще нужна моя помощь, скажи формат данных, которые ты хочешь сохранять (или напиши пример уже сохраненных данных), если нет, скажи, чем твоя идея закончилась :)

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 05.02.2005 (Сб) 23:48

А не просто писать в конец exe? Программа будет работать...раньше с этим сталкивался.
Изображение

skord
Китаец
Китаец
 
Сообщения: 572
Зарегистрирован: 14.10.2004 (Чт) 15:36
Откуда: Иркутск

Сообщение skord » 07.02.2005 (Пн) 7:33

А что за прога, если не секрет?

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 07.02.2005 (Пн) 9:48

Ой, спасибо всем большое, извиняюсь долго не отвечал, уезжал... Большое спасибо. В общем примерно решилось как сказал FleX_2004, но пока, правдо в несжатом виде. Сегодня буду дорабатывать. Я правда просто увидел "первое попавшеемя пустое место" и записал параметры туда, работа .ехе не нарушилась. При тестовом сжатии почему то не работают все функции в таймерах(у меня на форме 5 таймеров - вот так я криво запустил 5 циклов в одно время =), почему то в общем функции вызываемые в таймерах не пашут вообще.. ), вот сижу голову ломаю. Также помог пост (!!!http://bbs.vbstreets.ru/viewtopic.php?p=24566&sid=09027eeb562148e8ec68f5552fa6a99b!!!) на вашем же форуме, респект SSecurity. Вообще, большое спасибо, первый раз вижу настолько "быстроотзывчивый" форум по программированию. Если у кого есть идеи, почему не пашут функции в таймерах(по ходу, видимо вместе с ними) после сжатия - напишите пожалуйста.

revers
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.02.2005 (Сб) 8:47

Сообщение revers » 07.02.2005 (Пн) 9:58

Demonx, Я проверил, да можно, тока надо обязательно файл как binary открыть, а то я вначале....это, промазал в общем =)
Sync спасибо, решение, имхо, даже получше возможно, моя ошибка - плохо искал по форуму, твой пост на !год! моложе =), спасибо.
skord своего рода загрузчик конфигураций с инета на машины.
Ещё раз всем спасибо за помощь... Если кто сталкивался с проблемой упакощик+таймер или упаковщик+что-то отпишите пожалуйста.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 32

    TopList  
cron