|
|
|
Загрузка ВК без регистрации в реестре | ☑ | ||
|---|---|---|---|---|
|
0
orefkov
30.05.06
✎
14:23
|
Удалось создать ВК, которая умеет сама загружаться без регистрации ее в реестре, и загружать остальные ВК. Облегчи жизнь админу!
http://openconf.itland.ru/vk/vkloader |
|||
|
1
Кабан мимо пробеган
30.05.06
✎
14:27
|
Спасибо.. Дождались-таки...
|
|||
|
2
MMF
30.05.06
✎
14:30
|
(0) а можно в двух словах о том как это работает?
|
|||
|
3
The gray Cardinal
30.05.06
✎
14:30
|
(0) Браво!
Теперь глупый вопрос :) Возможна ли реализация такого механизма для любых COM-серверов в любых средах, которые могут выступить в роли OLE-клиента? |
|||
|
4
GrayT
30.05.06
✎
14:34
|
(2)По ссылке есть немного.
(0)Сенкс. ЗЫ: Эх опять чувствую себя бараном..... |
|||
|
5
smaharbA
30.05.06
✎
14:34
|
(0) маладца
А вот для ком wsc есть такая беда очч удобно GetObject("script:c:\com.wsc") к примеру, и можно даже так GetObject("script:c:\com.wsc#componenta") и тоже ничего регить ненада, у тебя чтото похожее вышло... |
|||
|
6
MMF
30.05.06
✎
14:36
|
(4) ткни носом
|
|||
|
7
orefkov
30.05.06
✎
14:36
|
(2)
Вобщем правится таблица импорта seven.dll - CLSIDFromProgID и CoCreateInstance и таблица импорта frame.dll - CoCreateInstance. Для работы CLSIDFromProgID в компоненту передают пары ProgID - CLSID, и она ищет сначала в них, и только потом штатно в реестре. А в CoCreateInstance если попадает CLSID ВК, создается ее объект через DllGetClassObject в dll ВК. |
|||
|
8
АЛьФ
модератор
30.05.06
✎
14:37
|
2(7) Получается свой маленький реестр :)
|
|||
|
9
GrayT
30.05.06
✎
14:37
|
(6)Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Хотя возможно я ткнул пальцем в..... и тебя волновало "Благодаря некоторым хитростям, ВК загружается без всякой ее регистации в реестре," |
|||
|
10
MMF
30.05.06
✎
14:39
|
(9) точно, я тоже так хочу, только масла в голове не хватает
|
|||
|
11
orefkov
30.05.06
✎
14:40
|
(9)
Там тоже никаких особых хитростей. Когда 1С подгружает дллку, чтобы считать строковый ресурс № 100, в дллке выполняется DllMain, то есть мой код. Остальное дело техники, см (7) |
|||
|
12
MMF
30.05.06
✎
14:42
|
(10+) или (7) происходит сразу в точке входа dll?
|
|||
|
13
MMF
30.05.06
✎
14:42
|
(11) спасибо
|
|||
|
14
jbond
30.05.06
✎
14:43
|
Это уже реализовано в 1С++?
|
|||
|
15
orefkov
30.05.06
✎
14:47
|
(14) Зачем?
|
|||
|
16
vladnet
31.05.06
✎
07:33
|
Ура! Наконец то это стало возможным :)
(0) Спасибо |
|||
|
17
smaharbA
31.05.06
✎
07:41
|
А теперь вопрос - и небудет пресловутого "CLSID не найден" даже если ВК "неверно организована"...?
|
|||
|
18
vladnet
31.05.06
✎
08:12
|
Compaund.dll
Ошибка 5 Не удалось получить идентификатор ВК :( |
|||
|
19
vladnet
31.05.06
✎
08:16
|
А может ее тоже не надо регистрировать, у меня возможности проверить нет, компьютер один
|
|||
|
20
Лефмихалыч
31.05.06
✎
08:25
|
(18) может дело в орфографии?
|
|||
|
21
vladnet
31.05.06
✎
08:29
|
(20) Да вроде нет, проверил снова. Хотя подозрения возникают :)
COMPOUND.DLL |
|||
|
22
vladnet
31.05.06
✎
08:34
|
Такой код:
//------------------------------------------------------------------------------ Функция глЗагрузитьВнешнююКомпоненту(пИмяФайлаКомпоненты, пПараметрЗагрузки="") глЗагрузчикВК=СоздатьОбъект("ЗагрузчикВК"); глЗагрузчикВК.ЗагрузитьВК(пИмяФайлаКомпоненты, пПараметрЗагрузки); Возврат 1; КонецФункции глЗагрузитьВнешнююКомпоненту("SCANOPOS.DLL", "Addin.Scanner=145344b1-3fc5-11d1-a470-004095e1daea"); глЗагрузитьВнешнююКомпоненту("VTools.dll", "Addin.VTools=04024c33-1111-11d1-a486-004095e1daea"); Не работает, говорит что {Глобальный модуль(626)}: Поле агрегатного объекта не обнаружено (ЗагрузитьВК) После второго запуска данной процедуры. :( Что делаю не так? Или сразу несколько загружать нельзя? |
|||
|
23
vladnet
31.05.06
✎
08:43
|
Попробывал и так и сяк.
Объект ЗагрузчикВК, можно использовать только один раз на моей системе, после этого он как то падает и на все остальные команды, говорит что поле агрегатного объекта не обнаружено. Причем создание объекта заново не помогает. PS WinXP SP2, 1c 25 SQL |
|||
|
24
Лефмихалыч
31.05.06
✎
09:07
|
Процедура ПриНачалеРаботыСистемы()
глЗагрузчик = СоздатьОбъект("ЗарузчикВК"); КонецПроцедуры Функция глЗагрузитьВнешнююКомпоненту(пИмяФайлаКомпоненты, пПараметрЗагрузки="") глЗагрузчикВК.ЗагрузитьВК(пИмяФайлаКомпоненты, пПараметрЗагрузки); Возврат 1; КонецФункции глЗагрузитьВнешнююКомпоненту("SCANOPOS.DLL", "Addin.Scanner=145344b1-3fc5-11d1-a470-004095e1daea"); глЗагрузитьВнешнююКомпоненту("VTools.dll", "Addin.VTools=04024c33-1111-11d1-a486-004095e1daea"); |
|||
|
25
orefkov
31.05.06
✎
09:48
|
Обновил версию до 1.0.0.2
Теперь попутно решает проблему "зависания" процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент. (18) compaund.dll разве ВК ? (22) Буду проверять. |
|||
|
26
orefkov
31.05.06
✎
10:19
|
(22) Проверил. У меня все нормально. Правда, у меня нет vtools.dll, проверял без нее. Спишись со мной. Адрес в readme.chm
|
|||
|
27
Вильям
31.05.06
✎
11:05
|
(0) Респект и уважуха. В который раз уже...
|
|||
|
28
vladnet
31.05.06
✎
16:53
|
(25) Тестовую конфигурацию выслал. Видимо у меня достаточно не типичный способ загрузки.
С компаундом действительно ошибся :( Извиняйте. |
|||
|
29
romix
модератор
31.05.06
✎
17:36
|
(0) Ух блин респектище! Хочу переписать этот принцип на дельфи в виде дополнения к своему патчу - тогда не придется править типовые... Разрешаете?
|
|||
|
30
промоутер Орефкова
31.05.06
✎
17:39
|
да ладно, чего уж там, разрешаем.
|
|||
|
31
orefkov
01.06.06
✎
08:58
|
(29)
Идеи - дарю. |
|||
|
32
vladnet
01.06.06
✎
10:45
|
(31) Александр, а как по моей тестовой ошибке?
Там ошибка возникает в силу каких то недоразумений с 1с++, а именно выявлена ошибка при работе с ДобавитьГлобальныйМодуль. |
|||
|
33
gr13
01.06.06
✎
10:54
|
класс! счас попробую, у меня как раз одна компонента не загружается внешняя
|
|||
|
34
orefkov
01.06.06
✎
11:12
|
На http://openconf.itland.ru/vk/vkloader выложены исходники (MS VC++ 6.0).
(32) Извини, пока не смотрел. По идее не должно быть конфликтов. |
|||
|
35
vladnet
01.06.06
✎
12:50
|
(34) Понимаю, работы много и без этого. Чтож пока отложу переход на этот механизм загрузки.
|
|||
|
36
kink
02.06.06
✎
13:44
|
Отличная штука, особенно актуально в терминале
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |