Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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-сайт: vt-dbnz.narod.ru
 Профиль | | #3
Добавлено: 14.01.06 16:18
Вот. Экстрактит бинарные данные из ресурса и записывает их в файл.
Option Explicit

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-сайт: vt-dbnz.narod.ru
 Профиль | | #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

Потом на панельки зелёній кубик с рукой появится, вот с помощью єтого редактора и можно зашивать в прогу ресурсы.

Как это сделать программно - рассказано выше...

Ответить

Страница: 1 |

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



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