А вообще это возможно ?

Создание, использование компонентов ActiveX
Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

А вообще это возможно ?

Сообщение Arto » 26.08.2008 (Вт) 8:32

Здравствуйте, ситуация такая
Пишу DLL на visual basic для работы с картами , в ней есть метод для подгрузки карт LoadLayer, те каждый раз при первом вызове DLL вызывается этот метод и карты подгружаются. Проблема состоит в том, что по времени это довольно таки длительный процесс.

Вопрос: Возможно ли сделать так, чтоб DLL загружалась бы на компьютер вместе с системой и при ее загрузки автоматически выполнялась процедура LoadLayer, те чтоб при использование ее в другом проекте не надо было вызывать это процедуру.
Спасибо, с уважением...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Конечно можно!

Сообщение Денис » 26.08.2008 (Вт) 9:04

Можно. Через rundll, в автозагрузке.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: Конечно можно!

Сообщение Arto » 26.08.2008 (Вт) 9:14

Денис писал(а):Можно. Через rundll, в автозагрузке.

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

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 26.08.2008 (Вт) 9:31

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

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re:

Сообщение Arto » 26.08.2008 (Вт) 9:49

Денис писал(а):Вообще, я считаю, что пихать в автозагрузку всякое - дурной тон. Лучше оптимизируйте код этой процедуры, или сделайте визуальный прогрессбар, показывающий загрузку карт. Пользователь будет видеть, что загрузка идет, и переживать не будет.

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

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Конечно можно!

Сообщение ANDLL » 26.08.2008 (Вт) 10:56

Денис писал(а):Можно. Через rundll, в автозагрузке.
Ну и бред, простите уж за суровость :)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Конечно можно!

Сообщение Денис » 26.08.2008 (Вт) 12:25

ANDLL писал(а):
Денис писал(а):Можно. Через rundll, в автозагрузке.
Ну и бред, простите уж за суровость :)

Но ведь ему надо, не просто загружать библиотеку, но еще и выполнять некую процедуру из нее, так? Значит, загружать эту библиотеку должен rundll!
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

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

Re: Конечно можно!

Сообщение Viper » 26.08.2008 (Вт) 13:46

Денис писал(а):
ANDLL писал(а):
Денис писал(а):Можно. Через rundll, в автозагрузке.
Ну и бред, простите уж за суровость :)

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

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: А вообще это возможно ?

Сообщение Денис » 26.08.2008 (Вт) 13:51

Viper
LoadLayer, нэ?

Arto
1. Читаешь это
2. Уточняешь, у тебя в библе LoadLayer это процедура или метод некоего класса.
3. Если это процедура, тогда:
Код: Выделить всё
start rundll32 yourlib.dll, LoadLayer
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: А вообще это возможно ?

Сообщение Arto » 26.08.2008 (Вт) 14:36

Денис писал(а):Viper
LoadLayer, нэ?

Arto
1. Читаешь это
2. Уточняешь, у тебя в библе LoadLayer это процедура или метод некоего класса.
3. Если это процедура, тогда:
Код: Выделить всё
start rundll32 yourlib.dll, LoadLayer


это процедура
Спасибо сейчас попробую

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

Re: А вообще это возможно ?

Сообщение Viper » 26.08.2008 (Вт) 14:38

Денис писал(а):2. Уточняешь, у тебя в библе LoadLayer это процедура или метод некоего класса.
3. Если это процедура,
Ага. Вот оно самое. ActiveX DLL.
Весь мир матрица, а мы в нем потоки байтов!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Конечно можно!

Сообщение ANDLL » 26.08.2008 (Вт) 14:40

Денис писал(а):
ANDLL писал(а):
Денис писал(а):Можно. Через rundll, в автозагрузке.
Ну и бред, простите уж за суровость :)

Но ведь ему надо, не просто загружать библиотеку, но еще и выполнять некую процедуру из нее, так? Значит, загружать эту библиотеку должен rundll!
А тебе в голову не пришло, что после завершения rundll весь результат выполнения процедуры пропадет втуне?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: А вообще это возможно ?

Сообщение ANDLL » 26.08.2008 (Вт) 14:42

Денис писал(а):3. Если это процедура, тогда:
Код: Выделить всё
start rundll32 yourlib.dll, LoadLayer
А-а
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Re: Конечно можно!

Сообщение Viper » 26.08.2008 (Вт) 14:46

ANDLL писал(а):А тебе в голову не пришло, что после завершения rundll весь результат выполнения процедуры пропадет втуне?
И это тоже.
Автор, С проектированием приложения у тебя не все в порядке.
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: А вообще это возможно ?

Сообщение Денис » 26.08.2008 (Вт) 15:04

Тогда автору поможет занесение библиотеки в список загружаемых при старте системы (не помню где это).
А вообще, во второй раз говорю, и присоединяюсь к высказываниям, что
С проектированием приложения ... не все в порядке
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: А вообще это возможно ?

Сообщение ANDLL » 26.08.2008 (Вт) 15:20

Денис писал(а):Тогда автору поможет занесение библиотеки в список загружаемых при старте системы (не помню где это).
То же глупость
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: А вообще это возможно ?

Сообщение Денис » 26.08.2008 (Вт) 15:51

ANDLL писал(а):То же глупость

Да што ты говоришь? А сам-то предложи вариант хоть один.
Я то хоть что-то предлагаю, что натолкнет автора на приемлимое решение. А ты и Viper только демагогию разводить горазды.

Arto
Rundll загружает библиотеку, выполняет функцию и выгружает библиотеку. Но. Если она (библиотека) указана в списке системных библиотек, она не выгрузится. Тебе так и надо, как я понимаю?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: А вообще это возможно ?

Сообщение ANDLL » 26.08.2008 (Вт) 16:04

Денис писал(а):Да што ты говоришь? А сам-то предложи вариант хоть один.
Дык, то что ты предлагаешь глупости. Ну я могу предложить слетать на луну, или залезть в ванну и кричать "я троллейбус", а толку то?
Автору предложили спроектировать приложение более детально, и это единственный дельный совет в топике.
что натолкнет автора на приемлимое решение.
Ошибочно думать, что пятнадцать неверных решений приведут к верному.
Если она (библиотека) указана в списке системных библиотек, она не выгрузится.
Ну и откуда ты это выдумал?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: А вообще это возможно ?

Сообщение Денис » 26.08.2008 (Вт) 21:00

ANDLL
Я согласен с советом перепроектировать приложение. Тем более, что в посте №4 я примерно такой совет и озвучил.
--
Но, если автору по каким либо причинам все-таки нужна висящая в оперативке сущность, и rundll принудительно выгружает даже системные библиотеки из памяти, то тогда можно наваять что-то типа загрузчика, который будет загружать и держать в памяти все необходимые сущности. Подобным методом пользуются office и acrobat reader, например.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: А вообще это возможно ?

Сообщение ANDLL » 26.08.2008 (Вт) 22:18

Денис писал(а):rundll принудительно выгружает даже системные библиотеки из памяти,
Да нету никаких сиситемных библиотек. И rundll - совершенно обычная программа, ничем не примечательная. И даже если dll будет висеть в каком-то процессе, то при запуске твоего нового процесса все ее переменные будут грузиться заново, и эти объемные процедуры, вроде LoadLayer все равно будут выполняться заново. Почитай про это.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Re: А вообще это возможно ?

Сообщение Хакер » 26.08.2008 (Вт) 22:39

[offtopic]
Надо бы нам переделать систему автоматической раздачи званий...
[/offtopic]

Денис, почитай Рихтера.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: А вообще это возможно ?

Сообщение Денис » 27.08.2008 (Ср) 7:43

Хакер писал(а):Денис, почитай Рихтера.


Хорошо
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.


Вернуться в Компоненты

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

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

    TopList