|
|
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Цель - Создание DLL для использования НЕ только DELPHI-ой Имею Unit Interface ---------------------------------------------- Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ---------------------------------------------- Unit своего объекта ---------------------------------------------- Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ---------------------------------------------- Unit Dll-Library ---------------------------------------------- Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ---------------------------------------------- Unit инициирующий вызов ---------------------------------------------- Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. ---------------------------------------------- Возникли вопросы - зачем создан дополнительный класс IMyInterface,разве невозможно сослаться непосредственно на TMyClass. Поясните пожалуйста ... - как вызвать функцию ReturnValue (даже не класс) из VBS VBS - скрипт прилагаю ---------------------------------------------- Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ---------------------------------------------- Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2019, 23:29 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_X, VBScript умеет работать только с объектами автоматизации, т.е. интерфейсом IDispatch для этого в дельфи нужно создать ActiveX library, добавить объект автоматизации - с этого и нужно начинать, а не с формочки эта dll-ка эскпортирует сервисные функции, которые и используются системой для созданния объекта (DllGetClassObject) в этом случае всю черновую работу по созданию библиотеки типов и интерфейсов дельфи возьмёт на себя, на начальнм этапе в эти кишки лезть не стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 00:06 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Не могли бы скинуть ссылку на простой пример Или на основании приведенного кода сделать правильные изменения Не приходилось такое делать Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 01:25 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_X, там праткически ничего не менялось с начальных версий дельфи - тынц в вашем случае обязательно надо добавлять галочку "Mark interface O leautomation" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 08:03 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
На эту тему существует dynawrapNt . Ещё здесь упоминание . Возможно, полезным будет статья Adding Active Scripting to your Delphi Win32 application . Если не секрет, то почему нужно вызывать именно из vbscript? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 09:24 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
это еще можно глянуть: http://www.delphisources.ru/pages/faq/base/com_automation.html в своё время оказалась самой информативной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 10:15 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_X, А еще можно было бы экспортировать обычные функции, первым параметром бы в которых шел бы handle обьекта класса, а далее обычные параметры. Зачем интерфейсы вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 11:01 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
а сорри, вот что нагуглилось: "You could only do this (possibly) if it was a COM object. VBScript does not support calling normal API functions" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 11:18 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Басик же ущербный, а басик скрипт ущербный вдвойне, чего вы от него хотите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2019, 14:23 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)tunknown, на русском есть более ранняя и понятная статья Спасибо - работаю еще вопросы - будет ли COM объект работать с простейшим вызовом типа Private Declare Function test1 Lib "D:\\testdll.dll" Alias "Square1" (ByVal n As Double, ByRef out As Double) As Double - возможен ли его запуск из JAR библиотек (JDK 7-8) - возможна ли работа без регистрации regsvr32.exe Не имею допуск к реестра ПК - просто ложу DLL в любой каталог определенный в PATH сессии пользователя Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 14:52 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Кроик СемёнHOME_X, Зачем интерфейсы вообще? Тоже думал над этим У Вас есть реальный и простой пример ? Сбросьте как видете ситцуацию попробую Может чтобы было красивенько ....и профессиональненко, для этого сделали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 14:55 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Василий 2Басик же ущербный, а басик скрипт ущербный вдвойне, чего вы от него хотите Ну что Вам ответить - МАЕМО ЩО МАЕМО !!!!!!! P.S. Я бы оставил вообще один язык программирования - РУССССССКИЙ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 15:19 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_XP.S. Я бы оставил вообще один язык программирования - РУССССССКИЙБыло уже. АЛМИР, Отстой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 17:43 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
1C же есть, мегапопулярный и распространенный в своей нише. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 18:13 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)HOME_X, там праткически ничего не менялось с начальных версий дельфи - тынц в вашем случае обязательно надо добавлять галочку "Mark interface O leautomation" Вроде все получилось с указанной Вами статьей - спасибо !!!!!!! Добавлю что регистрацию DLL в Win7 необходимо проводить с правами админа (ну если типа кто забыл) Исследовал Win - реестр - GUID и путь к dll - найден, но имя классов не обнаружил ? Таким образом вопрос, как применительно к статье "тынц" (имена классов я БЛЕЛ четко) следует писать вызов из VBS (обилие классов меня смутило и то что не нашел эти имена в сис. реестре) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 21:33 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
GatorHOME_XP.S. Я бы оставил вообще один язык программирования - РУССССССКИЙБыло уже. АЛМИР, Отстой! Это кажется из середины 60-х, АЛГОЛ,FORTRAN,Б3-32,МК-61,Козерог-1 и Аполлон-11 Не знаю такого языка, но точно помню что меня тогда еще не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 21:44 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_XЭто кажется из середины 60-х Нет, РАЯ это лет на 20 позже: https://ru.wikipedia.org/wiki/Учебный_алгоритмический_язык Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2019, 22:05 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_Xkealon(Ruslan)HOME_X, там праткически ничего не менялось с начальных версий дельфи - тынц в вашем случае обязательно надо добавлять галочку "Mark interface O leautomation" Вроде все получилось с указанной Вами статьей - спасибо !!!!!!! Добавлю что регистрацию DLL в Win7 необходимо проводить с правами админа (ну если типа кто забыл) Исследовал Win - реестр - GUID и путь к dll - найден, но имя классов не обнаружил ? Таким образом вопрос, как применительно к статье "тынц" (имена классов я БЛЕЛ четко) следует писать вызов из VBS (обилие классов меня смутило и то что не нашел эти имена в сис. реестре) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. Спасибо Добавлю - по последнему пункту статьи Использовал OLE VIEW - Object classes/All Objects - похожего объекта нет Type Library - есть в наличии тип, интерфейсы, GUID-ы Отсюда и Set lb = CreateObject("как писать здесь ????????????") Подскажите где ошибка - спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 11:00 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovHOME_XЭто кажется из середины 60-х Нет, РАЯ это лет на 20 позже: https://ru.wikipedia.org/wiki/Учебный_алгоритмический_язык Нет. Это там ещё символ ∑ был. Код бился на перфоленты и гонялся на Наири 1-2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 11:19 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
Юзай CreateOLEObject/GetOLEObject посмотри Почему Эксель завершается только после CoUninitialize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 11:46 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
GatorЮзай CreateOLEObject/GetOLEObject посмотри Почему Эксель завершается только после CoUninitialize? Вопрос звучал так - как называется сервер CreateOLEObject(' ??????????? '); Ответ по статье звучал так - "строка Help String выступает в качестве внешнего имени сокласса (СОМ сервера)." Код: vbnet 1. В разделе Type Libraries можно найти информацию о библиотеке типов под именем, которое было указано в окне Help String редактора библиотеки типов для библиотеки типов. Этот тип существует, но сервера нет, наверное что-то сделал не так (НЕДОЧИТАЛ/НЕДОПИСАЛ/НЕДОПОНЯЛ) Или в статье момент пропущен По Вашей ссылке имели в виду = CoInitialize(nil); Но я смотрю ПОКА через приложение OLEVIEW Оно визуализирует все типы и сервера OLE которые есть в системе Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 12:44 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_X, подобная ситуация https://www.sql.ru/forum/558875-a/kak-pravilno-sozdat-com-obekt?hl=createobject 1) Интерфейс должен наследоваться от IDispatch 2) Методs должнs иметь dispid 3) Класс, реализующий интерфейс, должен наследоваться от TAutoObject 4) Фабрика класса должна быть TAutoObjectFactory Или делаешь New->Automation Object ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 13:03 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
HOME_X, В системе уже должен быть установленный зарегистрированный ехешник - OLE/COM - сервер , обеспечивающий свои интерфейсы, фабрики классов etc. Напр, Word/OOWriter для doc, Acrord для pdf Что у вас прописано в реестре для '{0806339A-4EDD-48A5-A60A-54E6E9AF94E1}'? У меня - ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2019, 16:39 |
|
||
|
DLL - вызов из VBS
|
|||
|---|---|---|---|
|
#18+
GatorУ меня - ничего. Аналогично но не хотелось бы затягивать переписку и говорить ни о чем Вы можете 1. поработать по статье = http://www.introligator.org/articles/3/78 (затрат времени не более 3-5 мин даже у меня .....) 2. попытаться осуществить вызов созданного в статье COM объекта Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. Мне кажется статья немножко не то регистрирует в "фабрике классов" TTypedComObjectFactory.Create(ComServer, TSmpCOM, Class_SmpCOM, ciInternal, tmApartment); Но четко сказать не могу - нет практики и понимания работы с COM Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2019, 00:16 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39858962&tid=2039052]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 521ms |

| 0 / 0 |
