Страница: 1 |
Страница: 1 |
Вопрос: Ресурсы
Добавлено: 14.01.06 15:18
Автор вопроса: VerhoLom
Интересно, а как можно зашить в экзешник ресурсы: иконки, строки и т. д., как это делает VС++ и как это сделано в системных библиотеках типа User32, Shell32.
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 14.01.06 15:48
Редактором ресурсов, наверное.
Номер ответа: 2
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #2
Добавлено: 14.01.06 15:59
А из проги как все это потом вытянуть и использовать как хош?
Номер ответа: 3
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #3
Добавлено: 14.01.06 16:18
Вот. Экстрактит бинарные данные из ресурса и записывает их в файл.
Private Declare Function FindResource Lib "kernel32" Alias "FindResourceA" _
 ByVal hInstance As Long, ByVal lpName As Long, 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 ExtractDll(ByRef File As String, ByVal ResType As String, ByVal ResID As Integer)
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
On Error GoTo eh
hResource = FindResource(App.hInstance, CLng(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, "ExtractDll", "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, "ExtractDll", "Cannot load the resource. (LoadResource failed.)"
Exit Sub
End If
ptrData = LockResource(hData)
If ptrData = 0 Then
Err.Raise 119, "ExtractDll", "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 As nmb
Put nmb, 1, ResData
Close nmb
Erase ResData
Exit Sub
eh:
MsgBox Err.Description, vbCritical, Err.Source
End Sub
Надо засунуть свой .exe в ресурс как binary, потом экстрактить его обратно с помощью этого и делай с ним, что хочешь.
Эта функция работает только для числовых идентификаторов, но ее несложно переделать под строковые.
Номер ответа: 4
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #4
Добавлено: 14.01.06 16:20
Фу. Неправильно вопрос прочитал. Извините.
Пробуй LoadResString, LoadResPicture, LoadResData. Еще посмотри API.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 14.01.06 21:40
Add-Ins>>VB 6 Resourses Editor
Потом на панельки зелёній кубик с рукой появится, вот с помощью єтого редактора и можно зашивать в прогу ресурсы.
Как это сделать программно - рассказано выше...