Не удаётся получить интерфейс IApplication (Interface not supported)

Автор JunexKK, 03.03.15, 16:52:49

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

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

JunexKK

При попытке получить интерфейс октрытого КОМПАСа выдаёт "Interface not supported"
if runKompasAPI = nil then
    runKompasAPI := GetActiveOleObject('Kompas.Application.7') as IApplication;

а при попытке создания приложения - "Недопустимая строка с указанием класса, ProgID:"Kompas.Application.7""
if newKompasAPI = nil then
    newKompasAPI := CreateOleObject('Kompas.Application.7') as IApplication;


Не работает на компьютере с Windows 7


JunexKK

В том то и дело, что один и тот же код работает на  ПК с Win8 и не работает на ПК с Win7


Sprinter500

Попробуй вот так:
function InitCMPS(): bool;//Активация КОМПАСа
begin
  try
    KompasApi:=GetActiveOleObject('KOMPAS.Application.7') as IApplication;
    ksDoc := KompasApi.ActiveDocument;
    pKompasDocument2D :=  ksDoc as iKompasDocument2D;
    result:=true;
  except
    KompasApi:=CreateOleObject('KOMPAS.Application.7') as IApplication;
    KompasApi.Visible:=TRUE;
    result:=false;
  end;
end;

У меня вроде аналогичная проблема была. Вот этот код заработал.  НО - у меня код для исполняемого EXE-файла, а не под библиотеку RTW - так что не знаю будет ли там работать.

В dll(rtw) смысла в этом нет, т.к. она работает в адресном пространстве Компаса.

Sprinter500

Так вот и надо узнать для какого случая спрашивал JunexKK: для dll (rtw) или для exe