Страница: 1 |
Страница: 1 |
Вопрос: Редактирование файла ресурсов
Добавлено: 05.04.07 02:16
Автор вопроса: FiLiN
Нужно программно отредактировать файл ресурсов.
Возможно ли это? Если да, то как? (в файле ресурсов обычный текст).
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 05.04.07 10:12
Можно. Насчет "как", конкретней спрашивай
Номер ответа: 2
Автор ответа:
FiLiN
Вопросов: 9
Ответов: 22
Профиль | | #2
Добавлено: 05.04.07 14:11
А как еще конкретней?
В файле ресурсов находится некоторый текст. Он выводится в текстовое поле, далее пользователь редактирует текст, потом он сохраняется обратно в текстовый файл ресурсов.
Вопрос в том: как мне сохранить измененный текст в файл ресурсов вместо первоначального.
Номер ответа: 3
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #3
Добавлено: 05.04.07 14:28
Первоначальный сделай размером эдак в килобайт, а потом просто открой себя For Binary и запиши вместо этой строки то что ввел юзер.
Номер ответа: 4
Автор ответа:
FiLiN
Вопросов: 9
Ответов: 22
Профиль | | #4
Добавлено: 05.04.07 16:40
А можно ответ по конкретней, в виде VB-кода. (я чайник).
Пробовал открывать сам себя, выскакивает (естесно) ошибка типа программа уже используется.
И если даже открою сам себя, как обратиться к файлу ресурсов чтобы туда записать???
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 05.04.07 19:28
ооо AgentFire, ну-ну... давай расскажи теперь человеку, как же редактировать файл реурсов через For Binary, как открыть самого себя итп итд )))))))))
Номер ответа: 6
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #6
Добавлено: 05.04.07 19:33
У тебя мило есть?
Номер ответа: 7
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #7
Добавлено: 05.04.07 20:12
AF, прочитать можно, но записать так просто не получится.
Номер ответа: 8
Автор ответа:
»VladikComper«
ICQ: 419668582
Вопросов: 23
Ответов: 147
Web-сайт:
Профиль | | #8
Добавлено: 05.04.07 21:23
Вряд ли можно программно РЕДАКТИРОВАТЬ файл ресурсов.
Какое редактирование, если он используется в программе? Файлы, которые используются прилжениями редактировать нельзя!!!
Номер ответа: 9
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #9
Добавлено: 05.04.07 21:24
Private Sub Command1_Click()
Me.Enabled = False
Dim ff As Integer, l As Long, tag As String * 12, s As Byte
ff = FreeFile
FileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\_" + App.EXEName + ".exe"
DoEvents
Open App.Path + "\_" + App.EXEName + ".exe" For Binary As ff
Get ff, LOF(ff) - 15, tag
If tag = "<INFORMATION" Then
Get ff, LOF(ff) - 3, l
Put ff, l + 1, Text1.Text
Put ff, l + 1 + Len(Text1.Text), "<INFORMATION"
Put ff, l + 13 + Len(Text1.Text), l
Else
l = LOF(ff)
Put ff, l + 1, Text1.Text
Put ff, l + 1 + Len(Text1.Text), "<INFORMATION"
Put ff, l + 13 + Len(Text1.Text), l
End If
Close ff
UnLoadCommand = "CTF:" + CStr(l + 16 + Len(Text1.Text))
Me.Enabled = True
End Sub
Private Sub Form_Load()
If App.PrevInstance Then
Unload Me
End
End If
Command1.Caption = "Save"
UnLoadCommand = ""
Dim ff As Integer, l As Long, tag As String * 12, s As Byte, Com As String, ff2 As Integer
Com = Command$
Select Case Mid(Com, 1, 3)
Case "TF"
Do While Not KillFile(App.Path + "\_" + App.EXEName + ".exe": DoEvents: Loop
Unload Me
End
Case "CTF"
l = Val(Mid(Com, 5))
Do While Not KillFile(App.Path + "\" + Mid(App.EXEName, 2) + ".exe": DoEvents: Loop
ff = FreeFile
Open App.Path + "\" + Mid(App.EXEName, 2) + ".exe" For Binary As ff
ff2 = FreeFile
Open App.Path + "\" + App.EXEName + ".exe" For Binary As ff2
For i = 1 To l
Get ff2, i, s
Put ff, i, s
Next i
Close
Shell App.Path + "\" + Mid(App.EXEName, 2) + ".exe DTF"
Unload Me
End
Case Else
ff = FreeFile
Open App.Path + "\" + App.EXEName + ".exe" For Binary As ff
Get ff, LOF(ff) - 15, tag
If tag = "<INFORMATION" Then
Text1.Text = ""
Get ff, LOF(ff) - 3, l
For i = l + 1 To LOF(ff) - 16
Get ff, i, s
Text1.Text = Text1.Text + Chr(s)
Next i
End If
Close ff
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Mid(UnLoadCommand, 1, 3) = "CTF" Then Shell App.Path + "\_" + App.EXEName + ".exe " + UnLoadCommand
End
End Sub
Private Function KillFile(FName As String) As Boolean
On Error GoTo e:
Kill FName
KillFile = True
Exit Function
e:
KillFile = False
End Function
Конечно нужно подшлифовать, но в принципе работает.
Напиши что - нибудь в Text1 и нажми на Save.
Закрой прогу, подожди немного и снова открой.
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 05.04.07 22:58
ууу... (( ну началось.. Начинали с вопроса о редактировании ресурсов, закончили банальной перезаписью строки в exe..:\ Некоторые вообще считают что ресурсы не редактируются когда они используются в программе?
Вообщем, для редактирования ресурсов есть API функции... Читаются без приколов, записываются конечно только в незапущенный exe. В принципе работа там не чуть сложнее чем api для ini, или для реестра. Кому надо - ищите на форме, я много раз постил пример.
Номер ответа: 11
Автор ответа:
FiLiN
Вопросов: 9
Ответов: 22
Профиль | | #11
Добавлено: 05.04.07 23:57
HACKER - Как в реестр сохранить я знаю (но не очень понимаю). А вот как из программы записать через апи в незапущенный ехе, который естесно запускает апи функцию не очень понимаю и осознаю логически.(то ли я совсем ламер, то ли ты не очень конкретно выразился.).
Серега - спасибо хоть за какой-то пример, хоть не совсем то что спрашивал, но может подойти, т.к. в файле ресурсов кроме текста ничего нет.
Номер ответа: 12
Автор ответа:
FiLiN
Вопросов: 9
Ответов: 22
Профиль | | #12
Добавлено: 06.04.07 00:02
HACKER - а какая связь при сохранении данных в реестр и в файл ресурсов.
Если это не сильно отличается, то я покопаюсь в этом направлении.
Есть еще у кого-нить какие идеи?????
Номер ответа: 13
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #13
Добавлено: 06.04.07 00:42
В принципе никакой. Я про то, что сама суть одинаково - вызов нужных api. Копай в поисках ключевых слов UpdateResource, BeginUpdateResource, LoadResource прям по этому форуму