Про дрова...

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

Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 13:35

Доброго времени суток! Попробую задать еще один глупый(с точки зрения проффесионалов) вопрос.
Если я в своей программе использую "не стандартные" элементы (например RichTextbox) то для корректной работы программы на компах, не имеющих VisualBasic, необходимо установить драйвер (richtx32.ocx) в системную папку винды. Обычно при первом запуске прграммы я проверяю наличие драйверов и при их отсутствии копирую.
Так вот в чем вопрос, можно ли драйвера "пикрепить" к проекту, чтобы не надо было их устанавливать, тем более, что на некоторых компах вообще ограичены права доступа?
В сети бываю редко!
Своего интернета у меня нет...

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 13:38

Хм, драйвер...

Так вот в чем вопрос, можно ли драйвера "пикрепить" к проекту, чтобы не надо было их устанавливать, тем более, что на некоторых компах вообще ограичены права доступа?


Без прав доступа все равно ничего не выйдет.

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 13:42

Да дело не столько в правах, сколько в том, что не хочется их каждый раз устанавливать, а хочется прикрепить к поекту, положить в рабочую папку и работть...
Где вообще в созданной программе прописывается путь к драйверам?
В сети бываю редко!
Своего интернета у меня нет...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 13:43

глупый(с точки зрения проффесионалов)

Профессионалов.

Если я в своей программе использую "не стандартные" элементы (например RichTextbox) то для корректной работы программы на компах, не имеющих VisualBasic, необходимо установить драйвер (richtx32.ocx) в системную папку винды.

Неправильно.
  1. Рич — стандартный элемент. Другое дело, что ActiveX-обёртка над ним не является стандартной.
  2. Не «не имеющих VisualBasic», а «не имеющих richtx32.ocx».
  3. Это не драйвер, а просто библиотека.

Так вот в чем вопрос, можно ли драйвера "пикрепить" к проекту, чтобы не надо было их устанавливать

Нет, но в случае с ричем, можно пользоваться исконным ричем, а не посредником. Тогда ничего распространять с собой не нужно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 13:53

Хакер писал(а):Нет, но в случае с ричем, можно пользоваться исконным ричем, а не посредником. Тогда ничего распространять с собой не нужно.

Ну рич только пример, но всеравно интерсно, что за исконный рич, как его инициировать?
И еще раз хочу акцентировать внимение на том, можно ли скопировать библиотеку в рабочую директорию своей программы и переписать в созданной программе путь к библиотеке со стандарного на рабочую папку?
В сети бываю редко!
Своего интернета у меня нет...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 14:00

что за исконный рич, как его инициировать?

CreateWindow.

И еще раз хочу акцентировать внимение на том, можно ли скопировать библиотеку в рабочую директорию своей программы

Либо ты путаешь рабочую папку и папку, в которой расположен исполняемый файл, либо это глупость, потому что рабочая папка может сто раз поменяться за время выполнения.

переписать в созданной программе путь к библиотеке со стандарного на рабочую папку

Это COM. Здесь привязка не к именам файлов, к идентификаторам класса.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Про дрова...

Сообщение karlex » 23.05.2009 (Сб) 14:03

Думаю обзывать COM-сервера, как я понял речь идет о них, драйверами -- крайность.

Программа не знает где расположен COM-сервер, ей известно только название класса, экземпляры которого она использует.
Путь к COM-серверу должен быть соответствующим образом прописан в реестре, что по сути и будет являться регистрацией COM-сервера в системе.

Грубо говоря алгоритм создания экземпляра класса следующий:
Программа -> Система
Система -> Реестр
Система <- Реестр
Система -> COM-сервер
Система <- COM-сервер
Программа <- Система

Добавлено:
Вижу я немного опоздал, надеюсь в моем сообщение найдется что-то полезное.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 14:06

Я имею в виду, что есть исполняемый *.exe - файл моей программы, и я хочу, чтобы он искал библиотеку richtx32.ocx (еще раз подчеркну, что это пример библиотеки) не в C:\Windows\System, а в той папке, в которой он находится!
Это возможно?
В сети бываю редко!
Своего интернета у меня нет...

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 14:41

Вот тебе вариант ( на Vb6 я так делал), переименовываешь richtx32.ocx в, например, laborant_richtx32.ocx, кладешь в папку с программой и при запуске регистрируешь app.path & "\" laborant_richtx32.ocx

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Про дрова...

Сообщение karlex » 23.05.2009 (Сб) 14:42

Лаборатор писал(а):Я имею в виду, что есть исполняемый *.exe - файл моей программы, и я хочу, чтобы он искал библиотеку richtx32.ocx (еще раз подчеркну, что это пример библиотеки) не в C:\Windows\System, а в той папке, в которой он находится!

Зачем твоей программе его искать?
Ну раз уж так нужно, то погляди примеры поиска файлов, я думаю на этом форуме их достаточно.

При чем здесь "C:\Windows\System"?
COM-сервер может лежать в любой директории на локальной машине, если не ошибаюсь то и не на локальной тоже, при этом твоей программе совершенно по барабану где находится сам файл, читай мое предыдущее сообщение.
Последний раз редактировалось karlex 23.05.2009 (Сб) 14:44, всего редактировалось 1 раз.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 14:43

Лаборатор писал(а):Я имею в виду, что есть исполняемый *.exe - файл моей программы, и я хочу, чтобы он искал библиотеку richtx32.ocx (еще раз подчеркну, что это пример библиотеки) не в C:\Windows\System, а в той папке, в которой он находится!
Это возможно?

Это невозможно, потому что программа (сама) вообще не ищет этот файл.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 14:43

Хорошо, а как регистрировать - я не умею :oops: ?
В сети бываю редко!
Своего интернета у меня нет...

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 14:45

Хакер писал(а):Это невозможно, потому что программа (сама) вообще не ищет этот файл.

А как он тогда ищется, на уровне кода это где-то зафиксировано же.
В сети бываю редко!
Своего интернета у меня нет...

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 14:46

А как он тогда ищется, на уровне кода это где-то зафиксировано же.


Читай что тебе пишут, в реестре прописан путь

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 14:48

Хорошо, а как регистрировать - я не умею ?

Эмм... вызвать DllRegisterServer у библиотеки. Или попросить regsrv32 это сделать.

А как он тогда ищется, на уровне кода это где-то зафиксировано же.

Программа знает ProgId компонента, преобразовывает его в clsid и передаёт в CoCreateInstance. Она, кажется, всё-же помнит имя файла, но только на случай вывода ошибки.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 14:50

arvitaly писал(а):Вот тебе вариант ( на Vb6 я так делал), переименовываешь richtx32.ocx в, например, laborant_richtx32.ocx, кладешь в папку с программой и при запуске регистрируешь app.path & "\" laborant_richtx32.ocx

А как регистрировать?
В сети бываю редко!
Своего интернета у меня нет...

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 14:50

Код: Выделить всё
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net

Declare Function DllRegisterServer Lib "ComCtl32.OCX" () As Long
Declare Function DllUnregisterServer Lib "ComCtl32.OCX" () As Long

Const ERROR_SUCCESS = &H0

' To register your OCX use this function:
If DllRegisterServer = ERROR_SUCCESS Then
    MsgBox "Registration Successful"
Else
    MsgBox "Registration Unsuccessful"
End If

' To unregister your OCX use this function:
If DllUnregisterServer = ERROR_SUCCESS Then
    MsgBox "UnRegistration Successful"
Else
    MsgBox "UnRegistration Unsuccessful"
End If


или
Код: Выделить всё
shell "regsvr32 rich.ocx",vbHide

Лаборатор
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 21.03.2009 (Сб) 15:06
Откуда: Москва

Re: Про дрова...

Сообщение Лаборатор » 23.05.2009 (Сб) 14:55

Спасибо, поробую!
А как использовать после регистрации?
В сети бываю редко!
Своего интернета у меня нет...

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 15:00

Спасибо, поробую!
А как использовать после регистрации?


Мммм, запустить "format c:\"

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Про дрова...

Сообщение VBTerminator » 23.05.2009 (Сб) 15:48

Лаборатор писал(а):А как использовать после регистрации?

Эээ... Похоже, регистрацию придётся проводить в отдельном исполняемом файле, который будет запускаться перед основным приложением, а то без зарегестрированного в системе RichTextBox'а основная прога просто не запустится.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 15:55

Запустится.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 15:55

Эээ... Похоже, регистрацию придётся проводить в отдельном исполняемом файле, который будет запускаться перед основным приложением, а то без зарегестрированного в системе RichTextBox'а основная прога просто не запустится.


Чушь

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Про дрова...

Сообщение VBTerminator » 23.05.2009 (Сб) 16:18

Хакер писал(а):Запустится.

Запустится-то запустится, но рухнет после сообщения "Run-Time Error: ***. Automation error The specified module could not be founded."
Привожу вещественные д-ва:

Изображение

arvitaly писал(а):Чушь

Что есть "чушь"?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 16:22

Ты привел доказательства того, что ты не знаешь методы работы с сабжем

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Про дрова...

Сообщение arthur2 » 23.05.2009 (Сб) 20:43

Запустится-то запустится, но рухнет после сообщения "Run-Time Error:


Регистрируй контрол до загрузки той формы, на которой он лежит :) Например, в стартовой процедуре main

А при выходе можно и разрегистрировать. Но в обоих случаях нужны права.
Артур
 
   

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Про дрова...

Сообщение Debugger » 23.05.2009 (Сб) 21:58

Такой вопрос уже не первую сотню раз поднимается.
В большинстве случаев решается запаковкой dll-ки в exe-шник (плохо), копированием dll-ки в папку программы (так себе; теряется смысл dll-ек) или как описал arthur, регистрировать при запуске (хорошо). А вот где ты будешь хранить dll-ку - в ресурсах или на сайте в Интернете - выбор широкий.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Про дрова...

Сообщение Хакер » 23.05.2009 (Сб) 22:38

Debugger писал(а):(так себе; теряется смысл dll-ек)

Не теряется.


Смысл (здрвый) теряется, когда человек вбивает себе в голову глупые идеи, вроде: я хочу, чтобы рядом с exe-файлом моей программы не было никаких других файлов.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Про дрова...

Сообщение arvitaly » 23.05.2009 (Сб) 22:48

Debugger,

Поищи в program files Dll-ки, увидишь, что все так делают

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Про дрова...

Сообщение Debugger » 23.05.2009 (Сб) 23:00

Да, я неправ.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 78

    TopList