Не могу открыть приложение AutoCAD в фоне

Автор Тема: Не могу открыть приложение AutoCAD в фоне  (Прочитано 7684 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ДамирАвтор темы

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Всем привет!
Вопрос простой. Скриптом открываю AutoCAD. Хочу чтобы приложение работало в фоне. Строку AcadApp.Visible = False  поместил в двух местах. В обоих случаях не работает. AutoCAD открывается, но не в фоне. Прошу помощи
Делаю так:
Код - Visual Basic [Выбрать]
  1. Sub GetCountOfSheets(O)
  2.   set Obj = O
  3.   set Files = Obj.Files
  4.  
  5.   Dim AcadApp, Docs, Doc, Path, CounSheet, CountFile
  6.  
  7.   CountSheet = 0
  8.   CountFile = 0
  9.  
  10.   on error resume next
  11.   set AcadApp = GetObject(,"AutoCAD.Application")
  12.   If Err Then
  13.     Err.Clear
  14.     Set AcadApp = CreateObject("AutoCAD.Application")
  15.   End If
  16.   AcadApp.Visible = False
  17.   'Set AcadApp = GetObject(,"AutoCAD.Application")
  18.  'Set AcadApp = CreateObject("AutoCAD.Application")
  19.  
  20.   Set Docs = AcadApp.Documents
  21.  
  22.   'file.CheckOut file.WorkFileName
  23.  Obj.CheckOut
  24.   for each file in Files
  25.     if Right(file.WorkFileName, 4) = ".dwg" then
  26.       CountFile = CountFile + 1
  27.       path = file.WorkFileName
  28.       set Doc = Docs.Open(path)
  29.       CountSheet = CountSheet + Doc.Layouts.Count
  30.       Doc = nothing
  31.     end if
  32.   next
  33.   AcadApp.Visible = False
  34.   Obj.Attributes("ATTR_SHEET_COUNT_FACT").Value = CountSheet - CountFile
  35.   AcadApp.Quit
  36. end sub
Сколько голов, столько умов. Но голов больше

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Насколько я помню реального невидимого AutoCAD добиться не получится. Тут и иконки появляются, и Лента и т.д. А открытие новых чертежей это всё усугубляет. Возможно это поразному в разных версиях AutoCAD.
1) Можешь попробовать AcadApp.WindowState = acMin.
2) Можешь попробовать через функцию Windows API с именем ShowWindow, используя AcadApp.HWND в качестве параметра, скрыть окно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ДамирАвтор темы

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Благодарю. Как я понял добиться явного скрытия приложения не получится. Как вижу в диспетчере AutoCAD открывается и среди видимых приложений и в фоне. Причем при закрытии руками видимого AutoCAD фоновые остаются в диспетчере.
Сколько голов, столько умов. Но голов больше

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Когда Вы сделали CreateObject ("Autocad.Application") приложение запускается в фоне, то есть в диспетчере видно процесс, а само окно не видно. Но ведь и этого должно хватать.

Пока Вы не вызовете AcadApp.Visible=True! Или когда совершите действие, которое по какой-то причине вызовет одно из диалоговых окно приложения, или смену вида. Тогда да, окно появится.

Мало кто лазит в диспетчер, чтобы отследить действие приложений.

Оффлайн ДамирАвтор темы

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Дело в том, что после CreateObject ("Autocad.Application") независимо от того, указываю я параметр Visible = True или Visible = False, либо вообще не указываю его. Я всегда получаю активное приложение. Возможно то огрехи машины по работе с COM-объектом, обязательно протестирую на другой.
Сколько голов, столько умов. Но голов больше

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Это конечно странно, увы, тогда AcadApp.Visible=False - это ваше решение, пока! Найду решение лучше - напишу.

Оффлайн ДамирАвтор темы

  • ADN Club
  • **
  • Сообщений: 94
  • Карма: 1
Благодарю за участие. Протестирую на иной машине также отпишу о результатах
Сколько голов, столько умов. Но голов больше