java-Не удается получить доступ к приложению ActiveX com.jacob.com.ComFailException: не удается получить объект clsid из progid

Я пытаюсь обнаружить лицо и сравнить код. Теперь для этого проекта я буду использовать ZZActiveX2.0. Поэтому я использовал jacob для доступа к Active X. Я скачал jacob-1.19 и скопировал jacob-1.19-x86.dll в System32 и зарегистрировал jacob-1.19.jar в своем проекте Java. Я проверил приложение clsid в реестре (HKEY_CLASSES_ROOT\ACTIVEX.ActiveXCtrl.1\CLSID(по умолчанию)->"{e77e4cc8-e879-4a72-850a-b824742ec5b7}").

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

class ActiveXTest {
    public static void main(String[] args) {       
        try {
            ActiveXComponent xl = new ActiveXComponent("{e77e4cc8-e879-4a72-850a-b824742ec5b7}");
            Dispatch xlo = xl.getObject();

        }
        catch (Exception e){
            e.printStackTrace();
        }

    }
}

Но в этом коде появляются ошибки, подобные следующим.

com.jacob.com.ComFailException: Can't get object clsid from progid
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
    at ActiveXTest.main(ActvieXTest.java:11)

Я искал эту ошибку и увидел пример проекта о приложении Word. Я следовал некоторым решениям, но это не работает в моем проекте. Кто-то посоветовал использовать regasm или AutoItx, но это тоже не работает. Вы когда-нибудь видели такие ошибки? Вы решили эту проблему?


person cosmosjefry    schedule 02.12.2019    source источник


Ответы (2)


Вы должны вставить зарегистрированное имя программы вместо clsid.

 ActiveXComponent activeXComponent = new ActiveXComponent("ACTIVEX.ActiveXCtrl.1");
person cosmosjefry    schedule 02.12.2019
comment
Спасибо за помощь. Я решил проблему. Это работает хорошо - person cosmosjefry; 02.12.2019

Вы можете использовать CLSID, но с таким синтаксисом:

ActiveXComponent xl = new ActiveXComponent("CLSID:{e77e4cc8-e879-4a72-850a-b824742ec5b7}");       
person Marco Balieiro    schedule 02.03.2020