Resourse editor

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

Resourse editor

Сообщение Ничи » 26.02.2006 (Вс) 9:50

Можно ли с помощью редактора ресурсов зашить в экзешник dll и ocx?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.02.2006 (Вс) 9:55

Вообще да. Смысла в этом мало, правда. Вернее вообще нет.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 26.02.2006 (Вс) 14:41

Можно. Суть заключается в следующем:
в файл ресурсов добавляешь свои DLL, OCX
К примеру, файл TabCtl32.ocx добавляешь в файл рес. под индексом 101 как Custom-ресурс
Код: Выделить всё
Dim bDLLOCXArr() As Byte
  Dim f As Long
  ReDim bDLLOCXArr(UBound(LoadResData(101, "CUSTOM")))
  bDLLOCXArr() = LoadResData(101, "CUSTOM")
  f = FreeFile
  On Error Resume Next
  Open "C:\Windows\System32\TabCtl32.ocx" For Binary Access Write As #f
  Put #f, , bDLLOCXArr
  Close #f
Shell "C:\Windows\System32\regsvr32.exe TABCTL32.OCX /s"


После завершения программы удали свои DLL-OCX командой KILL

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.02.2006 (Вс) 15:36

Честное слово, глупость. А если там уже есть TabCtl32.ocx? Обрабатывать ошибку?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.02.2006 (Вс) 15:40

Ряд вопросов по приведённому коду.

  • Не смущает ли автора, что доступа на запись в system32 легко может не быть?
  • Не смущает ли автора, что в системе может оказаться более новая версия регистрируемого компонента, и при подобной перерегистрации прекратит работать десяток уже установленных приложений?
  • Не смущает ли автора, что подобные компоненты останутся в системе при некорректном завершении работы программы?
  • Не смущает ли автора, что такие компоненты регистрируются в shared-разделе реестра, и удалять их следует только при достижении счётчиком нуля?
  • Не смущают ли автора ещё пара десятков не упомянутых здесь проблем, для решения которых давно придуманы инсталляторы?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 26.02.2006 (Вс) 15:46

Может стоит такие вопросы и такие ответы прописать в правила как недопустимые и некорректные? (А также про чтение файла без его открытия и тому подобную чушь?)
Весь мир матрица, а мы в нем потоки байтов!

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 26.02.2006 (Вс) 19:34

!Viper! писал(а):Может стоит такие вопросы и такие ответы прописать в правила как недопустимые и некорректные? (А также про чтение файла без его открытия и тому подобную чушь?)


Ну и где ты видишь чтение файла без его открытия. Здесь вообще чтения нет - здесь запись For Binary Access Write.

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 26.02.2006 (Вс) 19:48

Amed писал(а):Честное слово, глупость. А если там уже есть TabCtl32.ocx? Обрабатывать ошибку?


TabCtl32.ocx была приведена ТОЛЬКО для примера!
И вообще, зачем придераться к словам:
Сторчка Shell "C:\Windows\System32\regsvr32.exe TABCTL32.OCX /s" была приведена "на всякий случай". (Хоть к этим словам не придирайся!!!)
Как всем известно, VB6 не требует принудительной регистрации компонентов - они регистрируются автоматически после копирования в каталог с приложением (app.path)
А если уж очень приспичит использовать regsvr32, то его можно применить как раз в каталоге с приложением!

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 26.02.2006 (Вс) 22:16

Roman-vb писал(а):TabCtl32.ocx была приведена ТОЛЬКО для примера!
И вообще, зачем придераться к словам...

Ты не улавливаешь сути высказанных возражений. Тебе народ говорит, что для таких вещей существуют инсталляторы. Их применение более целесообразно, безопасно и т.д. (список можешь продолжить).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Roman-vb
Обычный пользователь
Обычный пользователь
 
Сообщения: 91
Зарегистрирован: 24.01.2006 (Вт) 18:31
Откуда: БРЯНСК

Сообщение Roman-vb » 26.02.2006 (Вс) 22:23

VVitafresh писал(а):Ты не улавливаешь сути высказанных возражений. Тебе народ говорит, что для таких вещей существуют инсталляторы. Их применение более целесообразно, безопасно и т.д. (список можешь продолжить).


Инсталляторы - инсталляторами, я против них ничего не имею и сам с помощью них регистрирую компоненты. НО в вопросе спрашивалось, как можно вшить ocx-, dll-файлы в файл ресурсов!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.02.2006 (Пн) 7:00

А на бессмысленность вопроса было указано в первую очередь.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 02.03.2006 (Чт) 20:50

Ничи вопросом интересующим тебя я щас сам занимаюсь. Пишу модуль для пихания библ и контролов(?тут ещё не знаю), со дня на день напишу могу выложить тебе это интересно?
А вообще если сам хочешь написать то дам подсказку пользуйся функциями:
Код: Выделить всё
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
Private Declare Function GetProcAddress Lib "kernel32.dll" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

FreeLibrary нужно для высвобождения из памяти. Думаю ты уже сам дагадался о чём я? :)

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 02.03.2006 (Чт) 20:55

И ещё я чот не понял, вы о чём? Какие вшивания в ресурсы? Вопрос же о редакторе ресов (в простонародье если уж на то пошло потрашилка ресурсов), такие как ResHacker например. А ресурсы подрузамевается как PE файлы. Хотя мож я чуть не догнал, нужно зашить в свою прогу библы и контролы или в чужую?

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 02.03.2006 (Чт) 21:05

Кароче если надо вшить в чужую прогу то надо иметь как минимум:
К ней доступ на запись +
Чтоб она была не упаковна.
:lol:


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

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

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

    TopList