Страница: 1 |
Страница: 1 |
Вопрос: Ресурсы и манифест
Добавлено: 20.02.06 17:11
Автор вопроса: Tamplier | ICQ: 298742928
Доброго времени суток!
Так как ресурсы я вообще не знаю, я с ними раньше не работал, то соответственно назревает вопросец.
Слыхал я где-то краем уха, что манифест мона в ресы запихать и не париться с отдельным файлом. Но тут такая лажа: Как его оттуда заставить работать?
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #1
Добавлено: 20.02.06 18:23
Распаковать из ресурса в файл.
Номер ответа: 2
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #2
Добавлено: 20.02.06 18:24
Компиль exe-шник, а потом (например через PE Explorer) суй манифест в ресурсы )
Номер ответа: 3
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #3
Добавлено: 22.02.06 17:04
Не, как запихать в ресурсы - эт я рахобрался...
То есть все равно с дополнительным файлом возиться придется, да? Ну лана.
Номер ответа: 4
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #4
Добавлено: 22.02.06 20:54
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 22.02.06 23:29
это равносильно, он всёравно в временную извлекает...
Номер ответа: 6
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #6
Добавлено: 23.02.06 18:38
Не, не хочу с п-ешкой возиться
Ну, лан, а как тогда его оттуда достать можно?
Номер ответа: 7
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #7
Добавлено: 24.02.06 20:22
Если я правильно понял вопрос
Private Declare Function FindResource Lib "kernel32" Alias "FindResourceA" _
 ByVal hInstance As Long, ByVal lpName As String, ByVal lpType As String) As Long
Private Declare Function LoadResource Lib "kernel32" _
 ByVal hInstance As Long, ByVal hResInfo As Long) 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 Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
 Destination As Any, Source As Any, ByVal Length As Long)
Public Sub ExtractFile(ByRef File As String, _
ByRef ResType As String, _
ByRef ResID As String)
Dim hResource As Long
Dim hData As Long
Dim ptrData As Long
Dim ResSize As Long
Dim ResData() As Byte
Dim nmb As Long
Dim Answ As VbMsgBoxResult
hResource = FindResource(App.hInstance, ResID, ResType)
If hResource = 0 Then
Err.Raise 119, "ExtractDll", "Cannot open the resource. (FindResource failed.)"
Exit Sub
End If
ResSize = SizeofResource(App.hInstance, hResource)
If ResSize = 0 Then
Err.Raise 119, "ExtractFile", "Cannot determine the size of the resource. (SizeOfResource failed.)"
Exit Sub
End If
hData = LoadResource(App.hInstance, hResource)
If hData = 0 Then
Err.Raise 119, "ExtractFile", "Cannot load the resource. (LoadResource failed.)"
Exit Sub
End If
ptrData = LockResource(hData)
If ptrData = 0 Then
Err.Raise 119, "ExtractFile", "Cannot lock the resource. (LockResource failed.)"
Exit Sub
End If
ReDim ResData(0 To ResSize - 1)
CopyMemory ResData(0), ByVal ptrData, ResSize
nmb = FreeFile
Open File For Binary Access Write As nmb
Put nmb, 1, ResData
Close nmb
Erase ResData
End Sub
Надеюсь, ничего не забыл. Выуживать такое из большого запутанного проекта сложно - всегда есть риск, что забуду к/л функцию приложить.
Номер ответа: 8
Автор ответа:
Tamplier
ICQ: 298742928
Вопросов: 58
Ответов: 340
Профиль | | #8
Добавлено: 25.02.06 16:22
Спасибо большое.
Хотя, на мой взгляд, если не нужно защищать прогу, можно не мучаться так с ресурсами, а создать этот файл вручную