![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Pinguin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 14.9.2006 Репутация: нет Всего: нет |
Можно ли стандартными способами развязать исполняемый файл(exe) и dll от физического расположения...
т.е. чтобы перед запуском выделялась область памяти, копировался файл и уже от туда запускался... Смысл -> иметь возможность перезаписать файл во время его выполнения... П.С.: писать нестандартный загрузчик не очень охото... не такуж и критично =) Заранее благодарен за любые советы... |
|||
|
||||
| Dmitriy2k |
|
|||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Стандартными способами типа malloc и new память будет выделяться только в сегменте своей программы, в виндовс каждой программе выделяется свой сегмент памяти и залезть в область другой программы стандартными способами нельзя(все что я знаю) а вообще задай этот вопрос в разделе "системное программирование и WIN API" может там чем помогут. |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Не получится так просто! Насколько я понимаю ты собираешься писать в собственный файл? Т.е. рубить сук на котором сидишь? Если так, то для этого необходимо создавать сторонний процесс который должен дождаться завершения твоего основного, а затем молча прибить, либо изменить исходный файл. Иначе никак. Потому как запущенный файл является используемым на всем протяжении работы, его модификация или изменение не допустима! Это сообщение отредактировал(а) Mephisto - 1.4.2008, 20:50 |
|||
|
||||
| Dmitriy2k |
|
|||
![]() шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 6.11.2005 Репутация: нет Всего: нет |
Если действовать по принципу, описанному Mephisto, то это можно сделать следующим способом:
1) написать програмку "rename.exe",которая будет изменять твою главную запускаемую программу 2) если ты не хочешь иметь два файла, а хочешь, чтобы rename.exe был в твоей программе - воспользуйся следующей утилиткой: rename.h
она создаст массив, содержащий rename.exe 3) подключишь rename.h в свою программу, в которой будет код(извини влом писать) создающий тот же rename.exe 4) Функцией ShellExecute запускаешь rename.exe, который дожидается завершения основного файла и изменяет его (в rename.exe после изменения твоего основного файла можно его заново запустить) ну а дальше сам подумай |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |