ADN Club > VBA
Не могу открыть приложение AutoCAD в фоне
Дамир:
Всем привет!
Вопрос простой. Скриптом открываю AutoCAD. Хочу чтобы приложение работало в фоне. Строку AcadApp.Visible = False поместил в двух местах. В обоих случаях не работает. AutoCAD открывается, но не в фоне. Прошу помощи
Делаю так:
--- Код - Visual Basic [Выбрать] ---Sub GetCountOfSheets(O) set Obj = O set Files = Obj.Files Dim AcadApp, Docs, Doc, Path, CounSheet, CountFile CountSheet = 0 CountFile = 0 on error resume next set AcadApp = GetObject(,"AutoCAD.Application") If Err Then Err.Clear Set AcadApp = CreateObject("AutoCAD.Application") End If AcadApp.Visible = False 'Set AcadApp = GetObject(,"AutoCAD.Application") 'Set AcadApp = CreateObject("AutoCAD.Application") Set Docs = AcadApp.Documents 'file.CheckOut file.WorkFileName Obj.CheckOut for each file in Files if Right(file.WorkFileName, 4) = ".dwg" then CountFile = CountFile + 1 path = file.WorkFileName set Doc = Docs.Open(path) CountSheet = CountSheet + Doc.Layouts.Count Doc = nothing end if next AcadApp.Visible = False Obj.Attributes("ATTR_SHEET_COUNT_FACT").Value = CountSheet - CountFile AcadApp.Quitend sub
Александр Ривилис:
Насколько я помню реального невидимого AutoCAD добиться не получится. Тут и иконки появляются, и Лента и т.д. А открытие новых чертежей это всё усугубляет. Возможно это поразному в разных версиях AutoCAD.
1) Можешь попробовать AcadApp.WindowState = acMin.
2) Можешь попробовать через функцию Windows API с именем ShowWindow, используя AcadApp.HWND в качестве параметра, скрыть окно.
Дамир:
Благодарю. Как я понял добиться явного скрытия приложения не получится. Как вижу в диспетчере AutoCAD открывается и среди видимых приложений и в фоне. Причем при закрытии руками видимого AutoCAD фоновые остаются в диспетчере.
Пашин Евгений:
Когда Вы сделали CreateObject ("Autocad.Application") приложение запускается в фоне, то есть в диспетчере видно процесс, а само окно не видно. Но ведь и этого должно хватать.
Пока Вы не вызовете AcadApp.Visible=True! Или когда совершите действие, которое по какой-то причине вызовет одно из диалоговых окно приложения, или смену вида. Тогда да, окно появится.
Мало кто лазит в диспетчер, чтобы отследить действие приложений.
Дамир:
Дело в том, что после CreateObject ("Autocad.Application") независимо от того, указываю я параметр Visible = True или Visible = False, либо вообще не указываю его. Я всегда получаю активное приложение. Возможно то огрехи машины по работе с COM-объектом, обязательно протестирую на другой.
Навигация
Перейти к полной версии