|
Проблема с регистрацией dll | ☑ | ||
---|---|---|---|---|
0
pers200590
30.07.12
✎
15:49
|
Здравствуйте, дорогие форумчане.
Не судите строго.Ранее создавал тему "Windows server 2008 R2 слетает зарегистрированный dll". Проблема до сих пор не решена, слетает зарегистрированная dll эквайринговой системы. На инфостарте нашел статью "Решение проблем с регистрацией внешних компонент в терминале". Посмотрел что у меня в конфигураторе: ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда #Если ВебКлиент Тогда #Иначе ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject"); ОбъектДрайвера = Новый("AddIn.SBRFCOMExtension"); #КонецЕсли Попробовал как в статье второй вариант, dll вообще не регистрируется и пишет "Драйвер не установлен и версия не определена. Подскажите как можно подключить dll другими способами в терминале и как в статье на инфостарте. Заранее спасибо |
|||
1
pers200590
30.07.12
✎
15:55
|
платформа стоит 8.2.15.319
|
|||
2
pers200590
30.07.12
✎
16:16
|
люди помогите разобраться
|
|||
3
pers200590
31.07.12
✎
03:39
|
дорогие форумчане,неужели так тяжело помочь.На форуме очень много тем насчет моей проблеме.но в них нет ничего путного
|
|||
4
Balabass
31.07.12
✎
05:19
|
Запусти от имени админа.
|
|||
5
Balabass
31.07.12
✎
05:20
|
А вообще сначало удали и заново поставь.
У меня такая хрень была с 1с 7.7. От имени админа стартанул - все ок стало. |
|||
6
pers200590
31.07.12
✎
06:41
|
регистрирую dll я всегда от имени администратора. Но почему dll слетает. Вот и я подумал , прочитав на инфостарте и на других сайта. может дело в процедуре подключения или как то напрямую подключить dll.
|
|||
7
ICWiner
31.07.12
✎
07:50
|
Насколько я в теме - напрямую ты ее не подключишь без регистрации в винде. Проблема не в 1с.
|
|||
8
Spacer1966
31.07.12
✎
12:07
|
Здравствуйте!
Я автор статьи на инфостарте "Решение проблем с регистрацией внешних компонент в терминале". Попробовал разобраться в вашей проблеме. Для начала попробовал установить драйвер эквайринговой системы на локальном компе в УТ 11. Пишет "Драйвер не установлен". Значит проблема с регистрацией dll. В справочнике "ПодключаемоеОборудование" есть макет "ДрайверСБРФЭквайринговыеТерминалы". В нем собственно и хранится нужная нам dll. Щелкаем на этом макете и нажимаем кнопочку "Выгрузить в файл". Файлу даем любое имя и расширение zip. Открыв архив видим 4 файла, в том числе нужный нам SBRFCOM.dll. Пробуем регистрировать его с помощью команды regsvr32.exe например в папке C:|Windows\Sysytem32. Регистрация проходит успешно. Но 1С все равно драйвера не видит. С помощью программы OLE\COM Object Viewer от можно определить что dll действительно успешно зарегистрировалась и в системе имеется COM-объект с ProgID = AddIn.SBRFCOMObject. Однако ОбъектДрайвера = Новый("AddIn.SBRFCOMExtension") не создается. На этом же форуме нашел статью в которой описывается эта проблема: v8: v8: СБ РФ: Эквайринговая система В последнем топике дается рекомендация: "Обязательно необходимо в папку bin где лежит платформа положить следующие файлы: GATE.DLL - это вспомогательная компонента для драйвера sb_kernel.dll - это видимо тоже какая то вспомогательная dll SBRFCOM.DLL - собственно сам dll взаимодействия с 1С" Также можете посмотреть вот эту статью: http://inq-brc.ru/index.php/think/474-1c8-sber-eq Здесь также пишут что наличие файлов GATE.DLL и sb_kernel.dll обязательно. Эти файлы можно получить у работников сбербанка либо скачать в этой публикации: http://infostart.ru/public/128682/ После копирования этих файлов в каталог где зарегистрирована SBRFCOM.DLL в 1С видим следующее: "Драйвер установлен", "Версия не определена". Это нормально. Данная dll не сообщает 1С о своей версии. Таким образом проблема с регистрацией dll решена. Далее используйте рекомендации в моей статье по поводу регистрации в терминале. Я думаю все должно заработать. |
|||
9
pers200590
31.07.12
✎
14:04
|
(8)Огромное спасибо, что откликнулись. С эквайринговым терминалом мучаюсь уже где то полугода. В конфигурации Розница 1.0 терминал мне удалось подключить без проблем.
В конфигурации УТ 11 когда был один терминал и обычный файловый вариант у меня все прекрасно работало, когда увеличилось количество рабочих мест и появился второй терминал, появились проблемы.Была установлена Windows server 2008 R2 x64 + RDP. И начались проблемы описанные на форуме инфорстарта по адресу http://forum.infostart.ru/forum33/topic63634/. Помогите разобраться сколько мучаюсь и обращаюсь никто не может помочь. |
|||
10
Spacer1966
31.07.12
✎
15:25
|
Я так понимаю что со сканерами проблема решена.
Осталась только с эквайринговым терминалом и с тем что слетает зарегистрированная dll. А вы сделали все так как описано в моей статье? 1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке в папке C:\WINDOWS\SYSWOW64. 2. ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject"); ОбъектДрайвера = Новый ("AddIn.SBRFCOMExtension"); После этого все равно проблема остаются? |
|||
11
pers200590
31.07.12
✎
15:39
|
(10) Да все сделано по вашей статье
1. Зарегистрирована dll на сервере терминалов в папке и в папке C:\WINDOWS\SYSWOW64. под администратором ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда #Если ВебКлиент Тогда #Иначе ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject"); ОбъектДрайвера = Новый ("AddIn.SBRFCOMExtension"); #КонецЕсли При этом вообще пишет Драйвер не установлен и версия не определена. Попробовал еще и пользователя зарегить под администратором. также ничего не помогло.Может есть какое ограничение у пользователей в терминале на регистрацию и использование dll. На просторах интернета нашел статью http://www.miko.ru/blogs/portnovblog/107/ |
|||
12
pers200590
31.07.12
✎
15:46
|
и кстати у все dll хранились и регились ранее в папке пользователя ExtCompT
|
|||
13
Spacer1966
31.07.12
✎
16:21
|
Ну, в 64-х разрядной Windows отведены специальные папки для dll:
System32 для тех что могут работать в 64-х разрядной среде и SysWOW64 для dll изначально написанных под 32-х разрядную среду исполнения. Эта dll для эквайрингового терминала скорее всего была написана под 32-х разрядную среду. Поэтому мне кажется правильнее ее поместить в папку C:\WINDOWS\SYSWOW64, а не в папку пользователя ExtCompT. Ограничения на регистрацию dll у пользователей терминала конечно же есть. Об этом как раз я и писал в своей статье. У них нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT. Поэтому происходит отказ в регистрации внешней компоненты. Я попробовал у себя под терминалом Windows server 2008 R2 x64 установить драйвера и посмотреть что получится. У меня все нормально. Пишет "Драйвер установлен", "Версия не определена". Так и должно быть. |
|||
14
Spacer1966
31.07.12
✎
16:37
|
Кстати, dll регистрировали под администратором?
regsvr32.exe вызывали из папки SysWOW64? Дело в том что regsvr32.exe есть еще в папке System32. Вызывать нужно именно тот что в папке SysWOW64. |
|||
15
pers200590
01.08.12
✎
03:25
|
(14) Дело в том что dll у меня лежит также и в C:\WINDOWS\SYSWOW64 и в папке пользователя ExtCompT
|
|||
16
pers200590
01.08.12
✎
06:26
|
(13) и у меня все работало, но только отваливаливась dll 2-4 раза за день
|
|||
17
Balabass
01.08.12
✎
06:48
|
Ого...
Знатный мужик однако! |
|||
18
Spacer1966
01.08.12
✎
10:44
|
(15) Это не имеет значения. Их может быть хоть десять в разных местах.
Используется та которая последний раз была зарегистрирована утилитой regsvr32.exe и сведения о которой прописаны в реестре. |
|||
19
Spacer1966
01.08.12
✎
10:57
|
(16) Ну а сейчас работает и отваливается или вообще не работает и пишет что "драйвер не установлен"?
Если отваливается то нужно определить что при этом происходит. Проверить действительно ли при этом теряется информация о регистрации компоненты в реестре. Вы справочник "Рабочие места" смотрели? Там нет такого что создается несколько рабочих мест для одной связки "Пользователь+Компьютер"? |
|||
20
pers200590
01.08.12
✎
12:58
|
(19) До 28.07.2012 работало, но отваливалось, после вашей статьи пытался изменить код в ПодключенииВнешнейКомпоненты на другой как у Вас в статье.после этого вообще писал "Драйвер не установлен" регистрация не помогала все вернул на место и все стало на свои места т.е "Драйвер установлен" но несколько раз в день стал отваливаться.
Как определить что при этом происходит?Как проверить?Можнт поможет сменить код как в вашей статье на принудительную регистрацию так как известно где файлы лежат или как то так. В справочнике "Рабочие места" была такая проблема, что при каждом входе в программу создавались новые рабочие места с разными идентификаторами но одинаковыми пользователями. |
|||
21
pers200590
01.08.12
✎
15:23
|
???
|
|||
22
Spacer1966
01.08.12
✎
16:22
|
По порядку. Для того чтобы драйвер нормально подключался в 1С необходимо:
1. Наличие в одной папке (допустим в C:\WINDOWS\SYSWOW64) файлов SBRFCOM.DLL, GATE.DLL и sb_kernel.dll. 2. Файл SBRFCOM.DLL должен быть зарегистрирован в каталоге C:\WINDOWS\SYSWOW64 с помощью утилиты regsvr32.exe из каталога C:\WINDOWS\SYSWOW64 Что имеем в стандартном варианте в УТ11? Драйвер устанавливается из макета "ДрайверСБРФЭквайринговыеТерминалы" справочника "ПодключаемоеОборудование". При этом 1С извлекает компоненту из двоичных данных макета и сохраняет ее во временной папке пользователя, например "C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp". Затем 1С регистрирует компоненту по этому пути, и дальше с ней уже можно работать. Чтобы компонента зарегистрировалась, необходимо чтобы у пользователя были права на изменение ветки реестра HKEY_CLASSES_ROOT. Допустим, права у пользователя есть и компонента т.е. файл SBRFCOM.DLL сохраненный 1С под именем v8_4_12.tmp в папке ""C:\Documents and Settings\User\Local Settings\Temp\1032\" была успешно зарегистрирована. Но! В этой папке в таком случае будут отсутствовать файлы GATE.DLL и sb_kernel.dll. Как же у вас тогда все работало? Что необходимо в моем варианте? 1. Все три файла SBRFCOM.DLL, GATE.DLL и sb_kernel.dll должны находиться в одном каталоге C:\WINDOWS\SYSWOW64. 2. Файл SBRFCOM.DLL должен быть зарегистрирован под администратором в каталоге C:\WINDOWS\SYSWOW64 с помощью утилиты regsvr32.exe из каталога C:\WINDOWS\SYSWOW64. В УТ11 в общем модуле МенеджерОборудованияКлиент есть процедура ПолучитьОбъектДрайвера() в этой процедуре должен быть код: ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда #Если ВебКлиент Тогда #Иначе ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject"); ОбъектДрайвера = Новый("AddIn.SBRFCOMExtension"); #КонецЕсли Метод ПодключитьВнешнююКомпоненту() должен найти уже зарегистрированный нами драйвер в системе по ProgID = AddIn.SBRFCOMObject. |
|||
23
Spacer1966
01.08.12
✎
16:29
|
По поводу того что в справочнике "Рабочие места" при каждом входе в программу создаются новые рабочие места с разными идентификаторами но одинаковыми пользователями.
Причина здесь в том что файл 1cv8u.pfl в папке C:\Documents and Settings\User\Local Settings\Application Data\1C\1Cv82 имеет неправильную структуру, либо он пустой. Этот файл должен иметь следующую структуру: { {""}, { {"Universal", {"ClientID", {"#",fc01b5df-97fe-449b-83d4-218a090e681e,ad7f6d3b-179f-4770-a2cc-0e9274d75e29},""}, { {""} } }, {""} } } где ad7f6d3b-179f-4770-a2cc-0e9274d75e29 как раз и есть идентификатор клиента. Значение fc01b5df-97fe-449b-83d4-218a090e681e по всей видимости является идентификатором компьютера. Содержимое этого файла можно скопировать у другого пользователя. Затем необходимо заменить идентификатор клиента на другой, взяв нужный нам идентификатор из справочника "РабочиеМеста". |
|||
24
pers200590
02.08.12
✎
02:50
|
(23) По поводу проблемы в справочнике "Рабочие места", решение которое вы написали я нашел на форуме Инфостарта и успешно его применил
|
|||
25
pers200590
02.08.12
✎
02:55
|
(22)У меня по пути C:\WINDOWS\SYSWOW64 лежит все один файл SBRFCOM.DLL - ок остальные скопирую В папке пользователя у меня лежали все файлы предоставленные СБЕРБАНКОМ. Как опробую отпишусь
|
|||
26
pers200590
02.08.12
✎
13:18
|
Сделал все что написано в (22) 2 терминала заработали в течение дня все работало и под вечер Кассиры опять сообщили. что появилось сообщение о том что проверьте настройки типа слетела dll и в справочнике Подключения торгового оборудования "Драйвер не установлен"
|
|||
27
pers200590
02.08.12
✎
16:49
|
?
|
|||
28
Spacer1966
03.08.12
✎
10:42
|
Трудно сказать с чем это связано.
У меня тоже такое иногда случается, но очень редко. Может какие-то баги винды или еще что. Решается завершением терминальной сессии пользователя и повторным входом на терминал. Что может быть в вашем случае? У меня вариантов два: 1. 1С попыталась вновь получить драйвер из макета справочника "ПодключаемоеОборудование" и зарегистрировать его в папке пользователя. Из-за этого предыдущая регистрация драйвера в реестре слетела. Тут нужно проверить код в конфигураторе. 2. В системном реестре исчезла информация о регистрации драйвера не по вине 1С, а по какой-то другой причине. Тут уже смотреть реестр и выяснять когда и почему это произошло. |
|||
29
pers200590
03.08.12
✎
15:28
|
(28) Подскажите, пожалуйста как проверить Ваши два варианта. Сегодня опять слетало.
Перезапуском сеанса пользователя проблема не решается |
|||
30
pers200590
03.08.12
✎
15:38
|
у меня шеф уже психует
|
|||
31
Spacer1966
03.08.12
✎
17:10
|
Проверьте ветку реестра
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{B36F6A41-5BB1-4B59-9797-BE55B61C9959} В параметре InprocServer32 должен быть прописан путь C:\Windows\SysWOW64\sbrfcom.dll В параметре VersionIndependentProgID должно быть "AddIn.SBRFCOMObject" Есть ли вообще эта ветка реестра после того как слетел драйвер? Правильный ли путь в ней прописан? Проверьте сообщения в журнале событий Windows, возможно там есть какие-то сообщения. |
|||
32
pers200590
04.08.12
✎
13:33
|
Интересная ситуация получается.
при открытии обработки "Свертка итогов" и при отплате по платежкой карте выдалось опять сообщение "проверьте настроки терминала" не загружена обработка обслуживания ( сказал образно). В справочнике Подключаемого оборудования "Драйвер не установлен". Хоть и слетел терминал, ветка в реестре существует. И путь в параметре указан не верный. Указан путь временной папки пользователя ExtCompT - причем путь пользователя первой кассы. И есть еще очень интересный параметр ThreadingModel со значение both. Путь переделал на C:\Windows\SysWOW64\sbrfcom.dll . А как разрегистрировать старые dll в реестре? |
|||
33
pers200590
06.08.12
✎
09:32
|
кто может еще добавить???
|
|||
34
Андрюха
06.08.12
✎
09:35
|
разрегистрировать можно regsvr32.exe -u Имярек.dll
|
|||
35
Spacer1966
06.08.12
✎
10:47
|
Параметр ThreadingModel должен быть. Это нормально.
То что указан неверный путь означает что была попытка перерегистрации драйвера из 1С при подключении его из макета справочника "ПодключаемоеОборудование". Есть еще конечно вариант что винда каким то образом восстановила старый вариант этой ветки реестра, но это маловероятно. Так что нужно смотреть код в 1С. Искать место откуда был вызван метод ПодключитьВнешнююКомпоненту() или УстановитьВнешнююКомпоненту() с параметром указывающим путь к макету содержащему драйвер. А что это за обработка "Свертка итогов"? Она не типовая? Может это в ней содержится код который сбивает регистрацию драйвера? |
|||
36
Spacer1966
06.08.12
✎
11:57
|
В принципе, чисто теоретически, то что указан путь пользователя первой кассы не так уж и страшно.
По идее все должно работать даже при таком варианте при условии что: 1. В папке ExtCompT пользователя первой кассы имеются все три dll-ки; 2. У пользователя второй кассы есть права на чтение каталога ExtCompT пользователя первой кассы. |
|||
37
pers200590
06.08.12
✎
12:16
|
(35) Это конфигурация УТ 11.0.8.11
В ней целый функционал по эквайринговым системам. Сегодня в Windows server 2008 r2 x64 убрал параметр контроля учетных записей. Убрал все записи в реестре . Зарегистрировал dll только в C:\Windows\SysWOW64\sbrfcom.dll. В итоге не взлетело . Зарегистрировал все dll в ExtCompT и все заработало. Но опять все слетело в обед и потом вечером. В журнале событий никаких собыйти, ошибок и предупреждений нет касающихся терминала иили что-то подобное |
|||
38
pers200590
06.08.12
✎
12:18
|
Единственно я думаю может дать права на папку System32 и SysWOW64 этим пользователям, которые работают с терминалом.
|
|||
39
pers200590
06.08.12
✎
12:24
|
(35) Есть ПодключитьВнешнююКомпоненту() есть, в функции ПолучитьОбъектДрайвера(ДрайверУстройства) Экспорт. Больше ничего такого про макеты я не нашел.
Нашел также : ИначеЕсли Строка(ДрайверУстройства) = "СБ РФ: Эквайринговые терминалы" Тогда УстановитьВнешнююКомпоненту("ОбщийМакет.ДрайверСБРФЭквайринговыеТерминалы"); |
|||
40
pers200590
06.08.12
✎
12:26
|
НУ и
Процедура УстановитьДрайверИзДистрибутива(ИмяМакета, ИмяФайла) Экспорт ВременныйКаталог = КаталогВременныхФайлов(); // Получение макета с сервера СсылкаНаФайл = МенеджерОборудованияСервер.ПолучитьМакетССервера(ИмяМакета); // Распаковка архива дистрибутива во временный каталог Результат = ПолучитьФайл(СсылкаНаФайл, ВременныйКаталог + "Model.zip", Ложь); ФайлМакета = Новый ЧтениеZipФайла(); ФайлМакета.Открыть(ВременныйКаталог + "Model.zip"); ВременныйКаталог = ВременныйКаталог + "Model\"; Для Каждого ЭлементМакета Из ФайлМакета.Элементы Цикл Если ЭлементМакета.Имя = ИмяФайла + ".zip" Тогда СоздатьКаталог(ВременныйКаталог); ФайлМакета.Извлечь(ЭлементМакета, ВременныйКаталог); // Распаковка дистрибутива ФайлАрхива = Новый ЧтениеZipФайла(); ФайлАрхива.Открыть(ВременныйКаталог + ЭлементМакета.Имя); ФайлАрхива.ИзвлечьВсе(ВременныйКаталог); // Запуск инсталлятора ЗапуститьПриложение(ВременныйКаталог + ИмяФайла, ВременныйКаталог, Истина); // Удаление всех временных файлов после работы Попытка УдалитьФайлы(ВременныйКаталог); Исключение КонецПопытки; КонецЕсли; КонецЦикла; // Удаление всех временных файлов после работы ВременныйКаталог = СтрЗаменить(ВременныйКаталог, "Model\", ""); Попытка УдалитьФайлы(ВременныйКаталог + "Model.zip"); Исключение КонецПопытки; КонецПроцедуры |
|||
41
Spacer1966
06.08.12
✎
12:35
|
Ну, прав на папки System32 и SysWOW64 у пользователей терминала итак по идее достаточно. У них урезаны права на запись в реестр.
Попробуйте заменить УстановитьВнешнююКомпоненту("ОбщийМакет.ДрайверСБРФЭквайринговыеТерминалы"); На ПодключитьВнешнююКомпоненту("AddIn.SBRFCOMObject"); И посмотрите что получится. |
|||
42
pers200590
06.08.12
✎
13:15
|
(41) Большое спасибо. Код заменил.Попробовал сделать продажу, продажа прошла, но маленькая проблемка магазин закрылся и работу двух терминалов. можно проверить только завтра в течение рабочего дня.
|
|||
43
pers200590
06.08.12
✎
13:18
|
Очень странная ситуация получается правда?
|
|||
44
pers200590
06.08.12
✎
13:42
|
В Процедура УстановитьДрайверИзДистрибутива(ИмяМакета, ИмяФайла) - может там какой-либо подвох???
|
|||
45
Spacer1966
06.08.12
✎
16:35
|
Это зависит от того что находится внутри zip-архива в макете.
Если там находится dll, то она будет регистрироваться во временном каталоге пользователя, и тогда подвох возможен. Но иногда в макете находится не dll, а типичная программа установки (setup) для установки драйверов. В этом случае dll драйвера будут установлены и зарегистрированы там где это предусмотрено программой установки. |
|||
46
Spacer1966
06.08.12
✎
16:39
|
Вообще немного не так сказал.
Если внутри zip-архива в макете находится dll, то вызываются методы ПодключитьВнешнююКомпоненту() или УстановитьВнешнююКомпоненту(). Процедура УстановитьДрайверИзДистрибутива(ИмяМакета, ИмяФайла) вызывается только в том случае если внутри zip-архива в макете находится программа установки (setup). |
|||
47
pers200590
07.08.12
✎
13:00
|
(41) Теперь происходят вообще странные моменты.
При оплате платежной картой через документ ЧекККМ, при нажатии на кнопку "Расчет", выходит окно UPOS в котором пишется "Пин-пад не подключен" и справа окно "проверьте подключение. ошибка 4309". В справочнике "Подключаемое оборудование" в разделе Экварийнговый терминал Драйвер установлен. Приходиться опять же регистрировать dll и все прекрансо дальше работает. |
|||
48
pers200590
07.08.12
✎
13:01
|
Скорей всего я уже всех замучил, особенно Spacer1966. Но вот такая проблема . Не знаю уже что делать
|
|||
49
Spacer1966
07.08.12
✎
16:37
|
(47) Тут уже что-то с самим эквайринговым терминалом.
Нашел навскидку в инете на форуме два обсуждения на аналогичную тему: http://olegon.ru/showthread.php?t=6691 http://olegon.ru/showthread.php?t=12333 Может служба техподдержки сбербанка чем-то поможет? |
|||
50
pers200590
08.08.12
✎
03:13
|
(49) ну а почему выход из это ситуации лежит в перерегистрации dll опять же
|
|||
51
pers200590
09.08.12
✎
12:01
|
Во общем пообщался я с сотрудниками филиала нашего Сбербанка. Они вообще не в курсе такой проблемы(сложилось впечатление что они вообще ничего не знают).
Говорят что это проблема фирмы 1С, что dll sbrfcom рассчитана для работы одного терминала. Для того чтобы настроить работу двух терминалов необходимо зарегистрировать dll в двух местах и в 1с указать что для 1 терминала - 1 длл, для 2 терминала - 2 длл. Типа стандартная конфигурация длл рассчитана для работы с один терминалом. И как им доказать что они не правы. |
|||
52
Spacer1966
09.08.12
✎
15:57
|
Регистрация одной и той же dll в разных местах в принципе невозможна.
Каждая dll имеет свой уникальный CLSID. Например для sbrfcom.dll это {B36F6A41-5BB1-4B59-9797-BE55B61C9959}. Поэтому если даже скопировать sbrfcom.dll в разные каталоги и по очереди зарегистрировать ее в них, то в системном реестре останется информация только о последней регистрации. Странные консультанты в техподдержке Сбербанка если они этого не знают. Проблема скорее действительно в том что dll sbrfcom рассчитана для работы одного терминала. Параметры настройки этой компоненты довольно скудные, их вообще почти нет. Настраивается лишь ширина слип-чека и код символа частичного отреза. Если же посмотреть настройки "ИНПАС:Эквайринговые терминалы", то там куда больше параметров настройки. |
|||
53
Serginio1
09.08.12
✎
17:36
|
(52) Вообще то можно загружать без регистрации как это делает сама система.
Для этого нужны гуид библиотеки, а для получения класса подойдет и Guid IDispatch http://basicsprog.ucoz.ru/forum/6-7-1 var DllGetClassObject: function(const CLSID, IID: TGUID; var Obj): HResult; stdcall; ClassF: IClassFactory; base: IBaseFilter; LibHandle: Integer ............................. begin LibHandle:= LoadLibrary('xvid.ax'); DllGetClassObject:= GetProcAddress(LibHandle, 'DllGetClassObject'); DllGetClassObject(CLSID_XVID, IClassFactory, ClassF); ClassF.CreateInstance(nil, IID_IBaseFilter, base); FilterGraph.AddFilter(base, 'Xvid Decoder') end; |
|||
54
pers200590
13.08.12
✎
12:17
|
Объясни что у тебя написано в (53)?
|
|||
55
Serginio1
13.08.12
✎
12:38
|
(54) Ты можешь использовать несколько COM библиотек, только запуск нужно делать не через Новый ComObject()
а создав функцию загрузки как в 53 передавая путь к библиотеке и GUID библиотеки |
|||
56
pers200590
13.08.12
✎
15:31
|
нефига себе я даже с этим и не сталкивался
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |