Страница: 1 |
Страница: 1 |
Вопрос: как чтобы программа сохранила сама себя в exe файл
Добавлено: 26.03.07 10:33
Автор вопроса: Lenon
при запуске программы пользователь должен ввести какие- то начальные параметры,что-то должно произойти.
При нажатии на кнопку сохранить должно появится диологовое окно,пользователь вводит имя файла,в тот файл программа сохраняет сама себя.
А при нажатии на кнопку открыть,открывает этот сохраненный файл. Все это на vb.как это сделать? помогите пожалуйста.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #1
Добавлено: 26.03.07 13:29
А при чем здесь exe?
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 26.03.07 15:12
Ну скопируй свой файл.
Номер ответа: 3
Автор ответа:
Stars
Вопросов: 41
Ответов: 239
Профиль | | #3
Добавлено: 26.03.07 17:33
Я правильно понял Lenon тебе нужно чтоли типа сахранить данные в файл а потом прочитать? Что то я тоже не понял а EXE тут причём?
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 26.03.07 18:11
так в тот файл или сама в себя?
Ну думаю если бы в тот файл, то проблем бы небыло, очевидно вопрос о сохранении в самого себя. Тема эта не новая, много раз обсуждалась на форуме. Мы как обычно с Sharp'ом тягались чья идея лучше, сохранять в ресурсы или находить куда писать в сам exe Щас можно повторить подвиг, нафлудить ещё на страницы на 2-3 но небудем, правда ж? )
Вообщем в целом 2 пути решения: Программно редактировать ресурсы exe файла, или искать в exe нужную подстроку, и перезаписывать её...
При первом пути, тебе пригодится API для работы с ресурсами:
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" (ByVal hUpdate As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" (ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" (ByVal hModule As Long, ByVal lpType As String, ByVal lpName As String, ByVal wLanguage As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function LockResource Lib "kernel32" (ByVal hResData As Long) As Long
Private Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
B второй путь:
Объявить в exe достаточно большую строковую константу, потом искать её через InStr, и редактировать...
Номер ответа: 5
Автор ответа:
Lenon
Вопросов: 14
Ответов: 8
Профиль | | #5
Добавлено: 28.03.07 05:20
Да,именно так. Подскажи пожалуйста
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 28.03.07 15:06
ааамм o_O собственно подсказака выше... давай тогда конкретные вопросы что-ли...
Номер ответа: 7
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #7
Добавлено: 28.03.07 20:34
Борзеет молодежь...
Номер ответа: 8
Автор ответа:
Stars
Вопросов: 41
Ответов: 239
Профиль | | #8
Добавлено: 29.03.07 21:55
[/CODE]Скочай справочник по Api (Так меня на форуме научили(Справедливо сделали)) И потом по апи используч примеры и разное другое разобраться можно!!