• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Подключение Сторонней Dll

  • Автор темы DNT
  • Дата начала
D

DNT

Domino-Designer Согласен

уже и не пробую работать напрямую с декларированием dll.
Использую Set devmgr = createobject( "iFOBSDocIntegrator.DocOperation")

Это же аналог такого же способа как в Excel через Tools-References... Правильно я понимаю?
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
Правильно понимаешь, так зарегистрировано это приложение и тебе только СОМ
Теперь про путь.... посмотри, кто имеет туда доступ, не является ли эта папка подсоединенным по сети диском, правильно ли ты его написал, нет ли русских букв, пробелов и длинна не превышает 255...
Еще, символ ' и ", как говорится, две большие разницы, попробуй обрамить путь в '
в символе ":" не может быть проблемы... попробуй ключи положить в дефолтную для проги папку и дать относительный путь, а не абсолютный.

sic! И убей все уже запущенные процессы этого FOBS

UPD файлы-ключи не ReadOnly? Сними с них все флаги. (Бэкапы они такие)
 
D

DNT

2 Domino-Designer

да, дело не в ":" - это я сам себя запутал.
Вобщем проделал все твои рекомендации - результат следующий:

если указываю правильный путь к ключам: path = "d:\key"
получаю ответ от вызова фунции в переменную Result: "<?xml version=""1.0"" encoding=""windows-1251""?><ERROR>Access violation at address 00000000. Read of address 00000000</ERROR>"

если указываю заведомо неправильный путь: pathToKey = "c:\badpath\"
получаю ответ в переменную Result: "<?xml version=""1.0"" encoding=""windows-1251""?><ERROR>Указан неправильный путь к ключам пользователя!</ERROR>"

Т.е. если папка существует (и кстати неважно есть в ней ключи или нет) dll видимо запускает какуюто инструкцию (дешифровка ключей, да бог знает что еще ...) которая возвращает "Access violation ...", а если папка указана неправильно то срабатывает корректная проверка на ошибку в dll и возвращается красивое "Указан неправильный путь..."

Задал вопрос разработчику - жду ответа.
А вы что думаете по этому поводу?

п.с. я уже и DEP отключил по этому солюшену не помогло.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
вот раньше... ;)
помню нотусня передавала стринги нультерминированные, как теперь это текет, через бридж - не задавался вопросом
но ошибка очень похожа на попадание в область памяти за отведенными границами - т.е. не нахождение нуля!
у дэльфинов принята практика отводить (ИДЕ так генерит) область куда потенциально сваливаются участки с багами (в мозгах разраба)
вывод (возможно ошибочный) - разраба пороть, либу переписать на контроль буфера по параметру :)
типичный вариант
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
ишьюс - копать куда-то сюда (пробовать)
но разраба - наказать однозначно (нечё быдолкодить, сверлить дыры и в без того... ОС)
 
D

DNT

писец, первый раз вижу в лотусе такое объявление: Dim winTitle As String * 255
... ламер, что с меня взять...

Статья классная, завтра буду пробовать, спасибо lmike

уточню на всяк случай (котелок уже плохо варит) - мне уходить от использования activeX и COM и пробовать декларировать отдельно каждую функцию используя Declare Function Login Lib ... ?
Так получается? Только, в отличие от предыдущих моих потугов, передавать такой хитрый стринг?
 
D

DNT

Domino-Designer

антивирусы были сразу отключены, доступ даден полный тоже был, юзер админ на компе, ACL, секюрити агента... все проверил

Мне кажется ты прав - код внутри dll хочет вызвать некую инструкцию которую ему запрещает а) винда б)лотус
В логах винды - тишина.

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

lmike

пробовал объявлять как в статье - аксесс виолясьён, мать его..
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
суть в передаче стринга с 0 (байт) на конце, прям в КОМу
разраб не контролирует размер буфера, а с пом. систем. ф-ций просто ищется 0 (как уже описано выше)
второй вариант - нужна передача по ссылке, а стринги, в нотусятине (ЕМНИП), передаются по значению.
Как в КОМу передать по ссылке... - ну например создать массив байт (а не стринг) терминированный 0-ом

Добавлено: есть еще одна виндотупь - буфер может быть длинной 128 и если передадим 225,0 (из ф-ции String) - до нуля дело не дойдет
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
коротко:
path={...}
Dim l as Integer
l=Len(path)
Dim arr(l)
for i=0 to l-1
arr(i)=Mid(path,i+1,1)
Next
arr(l)=0

размер элемента - очень большой вопрос, только в случае с английским - 1 байт
есть еще вариант
и дополним stream1.Write(0)
 
D

DNT

lmike

если передаю массив стрингов вместо стринга, получаю мессаджбокс от Лотуса: "Automation object argument type mismath"

Domino-Designer

есть конкретные предложения?
 
D

DNT

да ниче такого секретного тут нет, вроде все просто:

Lotus - Release 8.5.3 Revision 20110916.0921 (Release 8.5.3)
Windows - Windows 7 Максимальная, SP1, x64
то с чем еб.сь - краткое описание:
полное - в приложенном файле
тут качал install -

После инсталляции нашел в папке программы пример от разраба - полностью работающий (проверял реальными данными) файл Excel c этой библой.
Начал делать базу в Лотусе - наткнулся на облом...
 

Вложения

  • iFOBS.OCI_Техническая_спецификация.doc
    433,5 КБ · Просмотры: 305
D

DNT

Код:
Вам необходимо просмотреть параметры настроек в файлах разрешения (JAVA)

где это? и джава тут причем?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
а на пальцах можешь показать? )
ну я и написал https://codeby.net/threads/56024.html?vi...st&p=253192

Добавлено:
lmike

если передаю массив стрингов вместо стринга, получаю мессаджбокс от Лотуса: "Automation object argument type mismath"
не стрингов, а байт, нужно
 
D

DNT

не понимаю. так как ты описал я попробовал:

Код:
path = "D:\test"
Dim l As Integer
Dim i As Integer
l=Len(path)
Dim arrpath()
ReDim Preserve arrpath(l)
For i=0 To l-1
arrpath(i)=Mid(path,i+1,1)
Next
arrpath(l)=0

Set devmgr = createobject( "iFOBSDocIntegrator.DocOperation")
Result = devmgr.Login (sName,sKey1,sKey2,arrpath)

как массив байт сделать из строки?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
да, именно так, но только для английского
для "любого" - через стрим (по ссылке)

Добавлено: возможно, в таком варианте, нотусня заговнякается по типам...
тогда надо пробовать через stream
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
поправил ссылку, звиняйте - сглючил буфер, а я не проверил
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
Код:
Вам необходимо просмотреть параметры настроек в файлах разрешения (JAVA)

где это? и джава тут причем?

При том, что руками придется лезть в настройки и добавлять разрешения, тупо в редакторе изменять политику партии.
Там всего насколько помню максимум 3 файла которые отвечают за безопасность и они пустые.

Простите меня за вчерашнее.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 947
609
BIT
246
еще нюанец - прочитать ссылку можно с No-Script (в ФайрФоксе) ато сайт денег хочет :lol:
продублирую
Код:
Sub Initialize

Dim sess As New NotesSession
Dim stream1 As NotesStream
Dim stream2 As NotesStream
Dim bytes1 As Variant
Dim bytes2 As Variant

Set stream1 = sess.CreateStream
Call stream1.WriteText("12345")
stream1.Position = 0
bytes1 = stream1.Read

Set stream2 = sess.CreateStream
Call stream2.Open("c:\temp\test.txt", "Unicode")
stream1.Position = 0
bytes2 = stream2.Read
Stop

End Sub
стоит добавить stream1.Write(0) - запись 0 (оконечного нуля) в стрим
а вот в какой кодировке... - виндятко юзает 2-х байтную юникод (в том числе). Бай-дефолт, всякие шняжки от виндоразрабов, в русско-говорящем сегменте, могут юзать вин1251 (нотусятина, кста - тоже так любит делать)
для путей (если они будут на кириллике) - даже не знаю что лучше будет (какую кодировку при записи/считывании)
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
еще нюанец - прочитать ссылку можно с No-Script (в ФайрФоксе) ато сайт денег хочет :lol:
продублирую
Код:
Sub Initialize

Dim sess As New NotesSession
Dim stream1 As NotesStream
Dim stream2 As NotesStream
Dim bytes1 As Variant
Dim bytes2 As Variant

Set stream1 = sess.CreateStream
Call stream1.WriteText("12345")
stream1.Position = 0
bytes1 = stream1.Read

Set stream2 = sess.CreateStream
Call stream2.Open("c:\temp\test.txt", "Unicode")
stream1.Position = 0
bytes2 = stream2.Read
Stop

End Sub
стоит добавить stream1.Write(0) - запись 0 (оконечного нуля) в стрим
а вот в какой кодировке... - виндятко юзает 2-х байтную юникод (в том числе). Бай-дефолт, всякие шняжки от виндоразрабов, в русско-говорящем сегменте, могут юзать вин1251 (нотусятина, кста - тоже так любит делать)
для путей (если они будут на кириллике) - даже не знаю что лучше будет (какую кодировку при записи/считывании)



Вы действительно там совсем *цензура*и? Не, я простой прогер.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!