Извлечение ресурсов из dll

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ale_x
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 04.03.2008 (Вт) 13:18

Извлечение ресурсов из dll

Сообщение ale_x » 13.03.2008 (Чт) 14:45

Можно ли загружать ресурсы из внешних dll.
Можно ли исопльзовать видео из файла ресурсов. т.е. нужно загрузить в контрол animation видео, хранящиеся в dll.

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 13.03.2008 (Чт) 16:34

1)
LoadLibrary
FreeLibrary
FindResource
SizeofResource
LoadResource
FreeResource

ale_x
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 04.03.2008 (Вт) 13:18

Сообщение ale_x » 13.03.2008 (Чт) 19:16

А не подскажите КАК ИМИ ПОЛЬЗВОАТЬСЯ? :oops:

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 13.03.2008 (Чт) 20:00

Код: Выделить всё
Private Const GENERIC_WRITE = &H40000000
Private Const FILE_SHARE_WRITE = &H2
Private Const CREATE_NEW = 1

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
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 SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) 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 CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hfile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Sub Command1_Click()
Dim lib As Long
Dim ri As Long
Dim rd As Long
Dim hfile As Long
Dim wb As Long

lib = LoadLibrary("shell32.dll")
ri = FindResource(lib, "#150", "AVI")
rd = LoadResource(lib, ri)

hfile = CreateFile("shell32_#150.avi", GENERIC_WRITE, FILE_SHARE_WRITE, ByVal 0&, CREATE_NEW, 0, 0)
WriteFile hfile, ByVal LockResource(rd), SizeofResource(lib, ri), wb, ByVal 0&
CloseHandle hfile

FreeLibrary lib
End Sub

ale_x
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 04.03.2008 (Вт) 13:18

Сообщение ale_x » 14.03.2008 (Пт) 8:14

Спасибо за помощь.
Я делаю так:
hfile = CreateFile("C:\shell32_#150.avi"..........................

А потом
Animation1.Open (C:\shell32_#150.avi)

А можно это как-нибудь сделать без создания файла на винчерстере. Я просто не пойму для чего строка hfile - что это переменная всебе хранит?

Пробовал
Animation1.Open hfile
и ничего, пишет, что Файл не найден.

И еще попутный вопрос: чтобы извлечь иконку или музыку из dll надо
сделать так:
Код: Выделить всё
lib = LoadLibrary("shell32.dll")
ri = FindResource(lib, "#150", "icon")


Пробовал так не получилось. Подскажите как правильно :roll:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

    TopList