|
|
|
Подключить библиотеку dll01.03.2017, 09:35. Показов 13413. Ответов 166
Метки нет (Все метки)
Данным диалектом Бейсика не пользуясь, но иногда здесь бываю. Решил немного поучаствовать. Собственно вопрос в следующем: можно ли пользоватся сторонними библиотеками в этом диалекте, насколько сложен процесс использования? Цель - есть своя xll для VBA, можно убрать обертку будет dll, выложу здесь для тех кто много считает, большими числами) (Гугл не спрашивал ибо важно понять, есть целесообразность в данном продукте?)
0
|
|
| 01.03.2017, 09:35 | |
|
Ответы с готовыми решениями:
166
Не получается подключить библиотеку Unmanaged.dll (Firefox nss3.dll) Подключить библиотеку dll Как подключить dll библиотеку? |
|
Кормпилятор
|
|||
| 03.04.2018, 23:13 | |||
|
Я худо бедно скодил CoCreateInstance, и не понимаю что такое cObject, он ничего не заполняет, я ему даю структуру из ANY PTR, равную кол-ву функций в библиотеке, после вызова там одни нули. Нету адресов функций, как мне их добыть? У тебя в программе на асме нет QueryInterface и всё работает.
0
|
|||
|
Модератор
|
|||||||
| 03.04.2018, 23:21 | |||||||
|
QueryInterface AddRef Release GetTypeInfoCount GetTypeInfo GetIDsOfNames Invoke ShowMsgBox CLSID - однозначно определяет реализацию. К примеру в классическом варианте это как просто путь к DLL, но к примеру тут возникает проблема что одна DLL может иметь только одну экспортируемую функцию одного имени. В COM же GUID (CLSID - class identifier) однозначно определяет реализацию. Одна DLL может содержать множество объектов с разными CLSID и никаких проблем не возникнет. IID - определяет интерфейс, CLSID - определяет реализацию. Это все очень упрощенно. Добавлено через 5 минут
Если бы гипотетически я бы реализовал в классе CTest какой-либо еще интерфейс, то я бы мог его запросить в коде через QueryInterface.
0
|
|||||||
|
Кормпилятор
|
|||||||||||||||||||||||||||||||||||||||||||
| 04.04.2018, 05:27 | |||||||||||||||||||||||||||||||||||||||||||
|
в место памяти указанное в последнем параметре. Короче выяснил что Hresult равен 0x80040154, а это ошибка "класс не зарегистрирован". Попробую зарегистрировать. Видать нули вылезали из аз этого, а я сижу бошку ломаю как идиот))) Добавлено через 1 минуту Добавлено через 5 часов 48 минут Короче ничего у меня не выходит. Подключаю хедеры:
находится по адресу смещения IFace. Если я всё правильно понял. Наваливаем асма:
Делал по этому ману с другого форума:
Ещё немного помучаюсь и наверное тупо забью на это, потому что пустая трата времени, сейчас реально не до изучения тонн литературы. Куда я вообще полез, в какие-то адские дебри.
0
|
|||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||
| 04.04.2018, 07:36 | |||||||||||
|
Quiet Snow, возьму на себя смелость показать, как это делается на PureBasic.
На примере Windows Media Player Запускаю OLE/COM Interface generator, он ищет все OLE/COM интерфейсы в системе, или могу указать на конкретный файл dll, если не зарегистрирован в системе. Ищу Media Player и генерирую код.
Я всё ненужное мне выбросил, оставил только тот интерфейс, с которым буду работать, а именно IMediaPlayer2 Теперь конкретно то, что я пишу руками это ниже:
Т.е. для другого контрола поменяется ProgID ("MediaPlayer.MediaPlayer.1" ) и указатель на интерфейс *mp.IMediaPlayer2 Естественно логику программы разумеется тоже самому. В результате всё работает: Это музыка, но видео тоже показывает.
1
|
|||||||||||
|
Модератор
|
|
| 04.04.2018, 08:32 | |
|
Quiet Snow, скинь пожалуйста exe я не сильно разбираюсь в синтаксисе fb. На первый взгляд у тебя 2 ошибки. Ты передаешь указатель на префиксную длину строки а нужно на саму строку. Вторая ошибкаэто то что ты передаешь BSTR а нужно *BSTR :
LEA ECX, Sa
0
|
|
|
|
|||||||||||||
| 04.04.2018, 13:07 [ТС] | |||||||||||||
|
Кликните здесь для просмотра всего текста
Библа подключается по uuid(77d79ca3-15a0-4310-b8d8-0bcbe3f72d96). В реестр пишу: Кликните здесь для просмотра всего текста
По-моему к свойствам и методам можно еще обращаться и по id(). В реализации интерфейса (см.выше) можно посмотреть id() для каждого свойства или метода.
0
|
|||||||||||||
|
Кормпилятор
|
|||
| 04.04.2018, 15:08 | |||
|
В начале строки я выделил 4 байта(2 пробела) и забил в них(в этот INTEGER) длину т.е значение 6. Вроде бы всё по стандарту, в любом случае прога бы хоть что-то вывела до нуля. Load Effective Adress (LEA) не помог.
0
|
|||
|
Модератор
|
||||||||||||
| 04.04.2018, 20:13 | ||||||||||||
|
1. Как я говорил ты передаешь указатель на префикс (6), а нужно на строку. Либо сделать типа того:
2. Лишнее перенаправление. Вместо указателя на интерфейс ты передаешь указатель уже на метод, а вместо вызова метода по указателю вызываешь по значению первых инструкций самого метода. 3. Вместо указателя на BSTR, передается BSTR. 2 и 3 решается изменением ассемблерного кода:
0
|
||||||||||||
|
|
|
| 04.04.2018, 23:06 | |
|
Манифест и dll взял из архива Подключить библиотеку dll
Регистрировал dll (успешно) но это не устраняло ошибку.
0
|
|
|
Модератор
|
|
| 04.04.2018, 23:08 | |
|
locm, какая система? Без манифеста работает? У Quiet Snow все заработало.
Код создания мой? Или какой-то свой? Dll в папке (если используется манифест) с программой? Название как в манифесте? Если код другой, то лучше скинуть архив с файлами тогда уже видно будет.
0
|
|
|
|
|
| 05.04.2018, 00:02 | |
|
С ошибкой разобрался. Дело было в том что запускал под управлением отладчика и исполняемый файл создавался во временной папке.
Теперь другая проблема. Программа вылетает при вызове метода ShowMsgBox с сообщением "Невозможен доступ к памяти. Ошибка чтения по такому-то адресу". Методу передается BSTR строка.
0
|
|
|
|
||||||||||||
| 05.04.2018, 07:32 | ||||||||||||
И GUIDs не совпадает у меня, вернее один совпадает.
0
|
||||||||||||
|
|
||||||||||
| 05.04.2018, 10:10 | ||||||||||
|
PB по умолчанию передает строки по указателю.
0
|
||||||||||
| 05.04.2018, 10:10 | |
|
Как подключить .dll библиотеку? Не могу подключить dll библиотеку Как подключить библиотеку 7z.dll? Как подключить библиотеку i7000.dll? Как подключить библиотеку shell32.dll ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|