Показать сообщение отдельно
  #12  
Старый 19.12.2014, 18:52
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А вот таким способом пробовали?
Код:
uses
  ComObj, ActiveX;
  
resourcestring
  rsAcadNotFound = 'AutoCAD не найден!';

var
  Acad: OleVariant;
  
procedure AcConnect(const acClassName: String; const acNewInstance: Boolean;
    const acVisible: Boolean);
var
  IU: IUnknown;
  ClassID: TCLSID;
  IsCreate: Boolean;
  ErrorCode: HResult;
begin
  if VarIsClear(Acad) then // если еще не присоединились… 
  begin
    // если AutoCAD не установлен — произойдет ошибка
    ErrorCode:= CLSIDFromProgID(PWideChar(WideString(acClassName)), ClassID);
    if not Succeeded(ErrorCode) then
      raise EOleSysError.Create(rsAcadNotFound, ErrorCode, 0);
    // пытаемся присоединиться к уже запущенному экземпляру AutoCAD
    IsCreate:= acNewInstance or (not Succeeded(GetActiveObject(ClassID, nil, IU)));
    if IsCreate then
      try
        // запускаем новый экземпляр AutoCAD
        Acad:= CreateComObject(ClassID) as IDispatch;
      except
        raise EOleSysError.Create(rsAcadNotFound, ErrorCode, 0);
      end
    else
      Acad:= IU as IDispatch;
    // управляем видимостью AutoCAD
    if not VarIsClear(Acad) then Acad.Visible:= acVisible;
  end;
end;

Где-то в программе:
AcConnect('AutoCAD.Application', True, False);
полная статья находится тут.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием