Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: www.doc-source.pp.net.ua/
 Профиль | | #6
Добавлено: 05.04.07 19:33
У тебя мило есть?

Ответить

Номер ответа: 7
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #7
Добавлено: 05.04.07 20:12
AF, прочитать можно, но записать так просто не получится.

Ответить

Номер ответа: 8
Автор ответа:
 »VladikComper«



ICQ: 419668582 

Вопросов: 23
Ответов: 147
 Web-сайт: vladikcomper.narod.ru
 Профиль | | #8
Добавлено: 05.04.07 21:23
Вряд ли можно программно РЕДАКТИРОВАТЬ файл ресурсов.
Какое редактирование, если он используется в программе? Файлы, которые используются прилжениями редактировать нельзя!!!

Ответить

Номер ответа: 9
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #9
Добавлено: 05.04.07 21:24
Private UnLoadCommand As String
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 ";DTF"
        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 прям по этому форуму

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам