Консультация № 18469
19.03.2005, 08:51
0.00 руб.
0 4 4
Уважаемые эксперты! Написал простую прогу на VB, но exe не работает на
другом компе без VB, какие компоненты нужны ещё и как можно посмотреть необходимые компоненты для контролов на блоке инструментов? Как можно включить их в exe файл?

Обсуждение

Неизвестный
19.03.2005, 10:11
общий
это ответ
Здравствуйте, Александр А.А.!
Если прога использует компоненты из стандартного набора контролов, то, как правило, больше ничего с собой таскать не надо. В редких случаях может потребоваться библиотека msvbvm60.dll.
Если же программа использует дополнительные dll и осх, то все эти компоненты необходимо включить в состав программы (в сам ехе их не встроить!). Помимо этого, надо будет позаботиться об регистрации (для ActiveX компонентов, native регистрировать не нужно) этих компонентов на машине юзера, обычно я использую DllRegisterServer. Пример:
<i>
Private Declare Function RegMSWINSCK Lib "MSWINSCK.OCX" Alias "DllRegisterServer" () As Long
Const ERROR_SUCCES = 0&
Dim RegMSWINSCKCode As Long
Err = 0
RegMSWINSCKCode = RegMSWINSCK()
If Err <> 0 Then
MsgBox "Компонент MSWINSCK.OCX не найден", vbCritical, "TestProgramm"
End
Else
If RegMSWINSCKCode <> ERROR_SUCCES Then
MsgBox "Операция регистрации MSWINSCK.OCX не выполнена", vbCritical, "TestProgramm":
End
End If
End If
</i>
Неизвестный
19.03.2005, 11:43
общий
это ответ
Здравствуйте, Александр А.А.!
Посмотреть dll можно в Project -> References, а ocx в Project -> Components.
давно
Профессионал
848
1596
19.03.2005, 13:59
общий
это ответ
Здравствуйте, Александр А.А.!
1.Для начала нужно определить список подгружаемых модулей вашей прогой. Таких прог не мало в инете, не вспомню конкретно, но предложить могу PROCDUMP прога правда для другого, но модули показывает;-) Так вот из полученного листа определяете нужные файлы. Ну и положив их рядом(или в папку system(system32))с вашем EXE на другом компе все должно работать. Есть одно ‘НО‘, некоторые dll модули не хотят работать без регистрации в системе. Если будет такая ситуация, зарегистрируйте модули приложением regsvr32.exe.
2. По поводу вложения недостающих компонентов в EXE.
Если конечно на машине нету msvbvm60.dll(говорим о VB6), то данный метод не прокатит, а если какого-нибудб OCX то нормально.
Создаем файл ресурсов и пихаем туда в раздел CUSTOM недостающий компонент. И следующий код на Form_Initialize()
----------------------------------
Private Sub Form_Initialize()
‘путь например такой, и 101 интедификатор ресурса
Extract "c:\windows\system\myocx.ocx", 101
End Sub
Private Sub Extract(toFile As String, ID As Integer)
On Error Resume Next
Dim a() As Byte
a() = LoadResData(ID, "CUSTOM")
Open toFile For Binary Access Write As #1
Put #1, , a()
Close #1
End Sub
---------------------------------
Данная подпрограмма извлечет файл из файла ресурсов и сохранит его на диске в нужном месте, с нужным именем.
Удачи.
Неизвестный
22.03.2005, 08:56
общий
это ответ
Здравствуйте, Александр А.А.!
любой проге написанной на VB необходима какая-то библиотека, не помню точно названия, кажется vbvbm.dll, первые 2 буквы точно эти, так что поищи в дистрибуттиве по ним. А компоненты можно посмотреть в окне их подключения (Project\Components) - когда выделишь какой-нибудь из них, то в низу этого окошка появится путь к файлу и его имя.
Включай их в комплект распрострнения своей программой и не забудь в коде своей программы регистрировать их программой regsvr32.exe (набери ее в консоли с параметром /? и посмотри).
Форма ответа