| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Объекты СОМ в AutoCAD

Объекты СОМ в AutoCAD

Ответ
Поиск в этой теме
Непрочитано 16.01.2008, 14:05
Объекты СОМ в AutoCAD
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Я думаю, что настало время завести специальную тему по поводу использования объектов СОМ технологии.
Ссылки, описания библиотек DLL, методы, свойства и прочее. Естественно в ключе использования AutoCAD-a на язывак AutoLISP и VBA.


Первая проблема:
Объект WScript.Shell
(setq svr (vlax-get-or-create-object "WScript.Shell"))
; создаем объект
(vlax-dump-object svr T)
; читаем его свойства и методы

Код:
[Выделить все]
; IWshShell3: Shell Object Interface
; Property values:
;   CurrentDirectory = ...Indexed contents not shown...
; Methods supported:
;   Exec (2)
T
Это у меня

А это у людей
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=39974nf

Код:
[Выделить все]
(defun C:TEST()
  (vl-load-com)
  (if (and
        (setq FILE (getfiled "Выберите файл для чтения" "" "csv" 16))
        (setq WS (vlax-get-or-create-object "wscript.shell"))
        )
  (vlax-invoke-method WS
    "run"
    (strcat "notepad.exe\ " FILE)
    4
    :vlax-true)
    )
  )
И это в описании
http://www.script-coding.info/WSH/WshShell.html

Библиотеки исполняемые модули вроде
wscript.exe 5.06.0000.8820
scrobj.dll 5.06.0000.8820
scrrun.dll 5.06.0000.8820
vbscript.dll 5.06.0000.8820

Но не уверен.
Кто и что скажет?

Люди! Сделайте
(vl-load-com)
(setq svr (vlax-get-or-create-object "WScript.Shell"))
(vlax-dump-object svr T)
;;; а потом
(vl-catch-all-apply '(lambda () (vlax-release-object svr)))


на своих машинах!!! Пожалуйста!!!
И скажите что видите.
Просмотров: 39443
 
Автор темы   Непрочитано 21.02.2008, 11:18
#101
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да, е-мае! НЕ ЗАПУСКАЮ Я ПРИЛОЖЕНИЯ ИЗ ПОД БРАУЗЕРА! Я браузер запускаю из под Автокада. Да и то не сам браузер, а скрипт-сценарий. А скрипт ловит события на странице и только! Никаких активных элементов в странице нет. Запускается только она, конкретная и никаких перемещений влево вправо. Страница твоя собственная. Ты сам ее сделал и только ты можешь в ней хакерствовать!
Какая к черту разница между скачиваемыми с сети прогамм, которые ты ни капли не задумываясь ставишь на свой комп, а они уж точно могут все нутро твоего компа перевернуть, в отличии от макроса работающего со страницей htp или htm?

Последний раз редактировалось Supermax, 21.02.2008 в 12:16.
Supermax вне форума  
 
Непрочитано 21.02.2008, 11:28
#102
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Для тебя, возможно, разница и есть. А для антивирусника или напуганного / затра***нного админа, которому "сверху" приказали закрыть ActiveX для Internet - никакой. Браузер ты еще вызовешь. Но (afaik) создать СОМ-объект из-под скрипта не сможешь.
Скрипт-сценарий сам по себе никому не нужен. Он должен быть обработан. Так? Скрипт ловит события (неважно где) - значит, активность. Да и не просто так активность, но и с залезанием в реестр для создания СОМ-объекта. Значит, подобная деятельность может быть (и, скорее всего, и будет) расценена как вирусная. По крайней мере у меня дома на виртуалке с файерволлом и антивирусником (для ради интересу поставил 3 виртуалки, на каждой ACAD2006 Rus + SP1, Comodo / Outpost, Avast / DrWeb в разных сочетаниях, настройки - как для "запуганных", то есть по максимуму) именно так и распозналось. И моментально блокировалось.
Цитата:
Какая к черту разница между скачиваемыми с сети прогами, которые ты ни капли не задумываясь ставишь на свой комп, а они уж точно могут все нутро твоего компа перевернуть, в отличии от макроса работающего со страницей htp или htm?
Разница в том, что софт ставится а потом запускается, а скрипт ты сразу на запуск ставишь. А так-то действительно, никакой разницы нет. Просто блокировать установленный софт иногда сложнее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.02.2008, 12:14
#103
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Ты хочешь сказать, что страничек на своем компе скоро будет не видно? Вряд ли. Как закачивались, так и будут закачиваться. Ты хочешь сказать, что СОМ технологию прикроют? Так вообще все станет. Может язык сценариев отменят, или запретят программам анализировать события, запускать собственные приложения, вообще обращаться к существующим СОМ объектам?
Давай заменим эксплорер на оперу и дело с концом.
Supermax вне форума  
 
Непрочитано 21.02.2008, 12:45
#104
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Вряд ли замена одного браузера по умолчанию на другой решит проблему.
Похоже, мы от начальной темы уже очень далеко ушли, уж извини меня за мои лирические отступления
Вот как ни крути, я все равно против подобного метода создания СОМ-объектов и работы с ними. ИМХО: каждое приложение должно выполнять свои действия, и не лезть куда не надо. Лично мне СОМ в паре с AutoCAD'ом требуется для строго определенных действий:
1. Показ "красивого" (а не нарисованного на dcl) диалогового окна (AutoCAD - СОМ-клиент, вызывает методы, описанные в dll).
2. Обращение к БД через ADO (fleming-group в полный рост)
3. Вызов стороннего exe и работа из-под этого ехе с AutoCAD'ом как СОМ-сервером (такое очень редко, но бывает нужно). Этот метод лично мне не очень нравится, но пока не переделывал.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.02.2008, 12:56
#105
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да мне фиолетово вообще КАК делать. Мне надо сделать макрос, работающий со страничкой Интернета. Да хоть через одно место, лишь бы сделать первый шаг. Потом можно анализировать и менять рельсы. А пока хоть как-нибудь.
Я хочу прямо из лиспа события смотреть НА СОБСТВЕННОМ КОМПЕ между прочим.
Supermax вне форума  
 
Автор темы   Непрочитано 23.02.2008, 18:17
#106
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Пытался сделать реактор на изменение свойств СОМ объекта - ничего не получилось. Хоть и vla-объект, но не Аавтокада. Не принимает его, ругается.
Сие маленькое огорчение говорит, что без внешних примочек и обращения к Автокаду через getobject для передачи инфы о проишедших событиях ничего не получится.
Все любители "чистого" лиспа могут сушить весла.
Supermax вне форума  
 
Автор темы   Непрочитано 26.02.2008, 17:16
#107
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Оказывается, чтобы выполнить в Автолиспе функцию или целую программу, написанную на vbscript или jscript не обязательно создавать файл и его потом запускать. Функции прекрасно загружаются по отдельности и простенько так выполняются.
Спасибо Серому кардиналу с серого форума.
Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "MSScriptControl.ScriptControl"))
(vlax-put-property svr "Language" "vbscript")
(vlax-invoke-method svr "AddCode" "Function test3 () msgbox \"Привет!\" End Function")
(vlax-invoke-method svr "AddCode" "Function test2 () msgbox \"Второе сообщение!\" End Function")
(vlax-invoke-method svr "eval" "test3")
(vlax-invoke-method svr "eval" "test2")
Две функции test3 и test2 какую хотите, такую и запускайте, а они еще и возвращать значения могут.

Теперь проблема компиляции лиспа с vbscript-ом отпала.
Supermax вне форума  
 
Автор темы   Непрочитано 27.02.2008, 19:24
#108
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Полезную вещ нашел.

Код:
[Выделить все]
(setq svr (vlax-get-or-create-object "MSScriptControl.ScriptControl"))
(vlax-put-property svr "Language" "vbscript")
(setq rezult (vlax-invoke-method svr "eval" "1+2+3*(4+5)"))
Возвращает вычисленное значение.
Часто надо посчитать формулу по человечески, например введенную пользователем. Вот очень простое решение.
Supermax вне форума  
 
Автор темы   Непрочитано 06.03.2008, 17:46
#109
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Бился я бился, то на "сером форуме", то в "мы дома" и благодаря помощи супер специалиста в области скриптовых языков WISGEST таки решил задачу про доступ из Автолиспа к объекту WScript и отслеживание событий на страничке браузера InternetExplorer.Application.

Первое - это мы создаем объект "WshScript".
Разработка WISGEST подача The gray Cardinal на сером форуме.
http://forum.script-coding.info/viewtopic.php?id=1187

Это три файла WshScript.wsc, WshScript.js, WshScript1.js

которые кладутся в папочку system32 и регистрируется
WshScript.wsc
Код:
[Выделить все]
regsvr32 C:\Windows\system32\WshScript.wsc
Все коды открытые и читаются блокнотиком.

Потом пишем программу, которая представляет из себя квинтэссенцию двух языков, AutoLisp'a и VBScript.

Ее написал WISGEST практически на ходу изучив Автолисп

Код:
[Выделить все]
(vl-load-com)

(setq ScriptControl (vlax-get-or-create-object "MSScriptControl.ScriptControl"))
(vlax-put-property ScriptControl "Language" "VBScript")
(vlax-invoke-method ScriptControl "AddCode" "
  Set AutoCAD = GetObject(, \"AutoCAD.Application\")
  Set ActiveDocument = AutoCAD.ActiveDocument
")

(setq WshScript (vlax-get-or-create-object "WshScript"))
(setq WScript (vlax-variant-value (vlax-get-property WshScript "WScript")))

(defun lispIE_OnQuit () (alert "Гуд бай!"))
(vlax-invoke-method ScriptControl "AddCode" "
  Sub vbsIE_OnQuit()
    ActiveDocument.SendCommand \"(lispIE_OnQuit) \"
  End Sub
")
(vlax-invoke-method WshScript "Add" "IE_OnQuit"
  (vlax-invoke-method ScriptControl "Eval" "GetRef(\"vbsIE_OnQuit\")"))

(setq IE (vlax-invoke-method WScript
  "CreateObject" "InternetExplorer.Application" "IE_"))
(vlax-put-property IE "Visible" 1)
Ну и я ему чуток помог

Тут вызывается браузер и при выходе из него срабатывает функция lispIE_OnQuit, выдающая сообщение "Гуд бай!"
Все это можно теперь скомпелировать и работать с браузером InternetExplorer.Application как с панелью кнопок.
Supermax вне форума  
 
Автор темы   Непрочитано 14.07.2008, 20:26
#110
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Готов первый в мире вебмакрос к Автокаду!

Всем сюда:

http://forum.dwg.ru/showpost.php?p=266764&postcount=13
посты №13 и 14.

Последний раз редактировалось Supermax, 11.11.2008 в 12:08.
Supermax вне форума  
 
Автор темы   Непрочитано 27.11.2008, 22:00 "MSScriptControl.ScriptControl"
#111
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Наконец-то раздобыл хелп-файл по этому объекту.
Надо его перелопатить для AutoLISP-a.
Практически все методы ясны, кроме метода Run.
Вложения
Тип файла: rar msscript.rar (40.8 Кб, 154 просмотров)
Supermax вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Объекты СОМ в AutoCAD

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
AutoCAD 2005 не открывает бесплатные 3Д объекты LenkA AutoCAD 3 11.02.2009 01:52
Уже работаю в AutoCAD 2006, но нужна книжка чтобы знать все тонкости работы с 2D графикой. Unt0nich Поиск литературы, чертежей, моделей и прочих материалов 17 06.05.2008 17:58
AUTOCAD 2006 Aragorn AutoCAD 14 01.04.2005 00:55
Что нового в AutoCAD 2005 ilka_t AutoCAD 40 19.05.2004 16:48