Использование API7

Автор Kredo, 24.10.05, 12:02:18

« назад - далее »

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

Kredo

Пытаюсь показать КОМПАС, но выдаёт ошибку ссылаясь на файл oleaut32.dll
Вот код. Что неверно:

var
  Form1: TForm1;
  Kompas: IKompasAPIObject;
  Aplik: IApplication;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        if Kompas=nil then
                begin
                ShowMessage(’Создадим КОМПАС’);
                Kompas:=IKompasAPIObject(CreateOleObject(’KOMPAS.Application.7’));
                ShowMessage(’Создали КОМПАС’);
                end;
        Aplik:=Kompas.Application;
        Aplik.Visible:=true;
end;

Михаил_С

Так API 7 не работает. Его надо получать, используя API 5. То есть:

1. Получаешь объект API 5.
2. Используя метод ksGetApplication7. Получаешь объект API 7.

Только вот я не понимаю зачем тебе он. Он же урезанный.Если ты, конечно, пользуешься Компас 3d v8. То он там может и пополнился, но если у тебя v7, то не имеет смысла даже пытаться с ним работать.

Михаил_С

Если хочешь, чтоб твой код заработал, то замени строку

Kompas:=IKompasAPIObject(CreateOleObject('KOMPAS.Application.7'));

на

Kompas:=IKompasAPIObject(CreateOleObject('KOMPAS.Application.5'));


Olegon

Приветствую!

Вот небольшой пример - запуск КОМПАС и октрытие документа

var
  Form1: TForm1;
  KOMPAS :IApplicationDisp;
  ksDocs :IDocumentsDisp;
  ksDoc :IKompasDocumentDisp;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  TRY
    KOMPAS:=CreateOleObject(’KOMPAS.Application.7’) as IApplicationDisp;
    KOMPAS.Visible:=TRUE;
    ShowMessage(’КОМПАС запущен’);
  EXCEPT
    KOMPAS:=nil;
  END;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TRY
    ksDocs:=IDocumentsDisp(KOMPAS.Documents);
    ksDoc:=IKompasDocumentDisp( ksDocs.Open(’E:\one.cdw’, TRUE, FALSE) );
    ShowMessage(’Открыли документ’);
  EXCEPT
    ksDocs:=nil;
    ksDoc:=nil;
  END;
end;

333

var
Form1: TForm1;
distp        : IDispath;
KOMPAS :IApplication;
ksDocs :IDocuments;
ksDoc :IKompasDocument;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
TRY
distp := CreateOleObject('KOMPAS.Application.7');
KOMPAS:= distp as IApplication;
KOMPAS.Visible:=TRUE;
ShowMessage('КОМПАС запущен');
EXCEPT
KOMPAS:=nil;
END;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
TRY
ksDocs:=KOMPAS.Documents;
ksDoc:= ksDocs.Open('E:\one.cdw', TRUE, FALSE);
ShowMessage('Открыли документ');
EXCEPT
ksDocs:=nil;
ksDoc:=nil;
END;
end;