
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);
полная статья находится тут.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
|