簡體   English   中英

通過Java在ActiveX控件(.ocx)中發出調用方法

[英]Issue calling method in ActiveX Control (.ocx) via Java

我的最終目標是從Java應用程序內部的指紋掃描儀獲取JPG。 我不需要任何識別或登錄。

我有一個Topaz IDGem LCD 1x5簽名板/指紋掃描儀。 他們為設備的指紋掃描儀部分提供的SDK稱為SigIDp1 問題在於它僅可用作ActiveX控件。

我對ActiveX幾乎一無所知。 從我的研究中,我似乎需要一個Java到COM的橋才能通過Java與ActiveX控件進行交互。 JACOB項目似乎是最著名的。 我的問題是我似乎無法使其與該特定ActiveX控件文件一起使用。

我的超高級Java程序如下所示:

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

public class JacobTest {

    public static void main(String[] args) {

        Dispatch test = new ActiveXComponent("SigIDp.SigIDp1");

        Dispatch.call(test, "CreateJpg");
    }
}

問題是,當我嘗試創建新的ActiveXComponent對象時,出現com.jacob.com.ComFailException: Can't co-create object錯誤。 根據此頁面 ,這似乎與.ocx文件未正確注冊有關。 但是,我無法使用引用的.NET工具(即RegAsm.exe )來注冊控件,因為我收到一條錯誤消息,指出它不是有效的.NET程序集。 而且,當我使用regsvr32.exe進行注冊時,注冊似乎成功了,但是仍然出現無法共同創建的錯誤(我已經在System32和SysWOW64中嘗試了regsvr32.exe )。

這么說,我很受困擾。 我願意接受任何可以幫助我實現最終目標的建議,即使它是從更友好的硬件開始的(盡管我在使用免費的Java SDK查找任何指紋掃描儀時都遇到了麻煩)。

對於任何偶然發現此問題的人:

事實證明,這畢竟是架構問題。 有問題的ActiveX控件似乎僅以32位形式提供。 因此,我嘗試注冊哪個版本的regsvr32.exe沒有關系,因為(據我了解),在64位JRE中運行的應用程序無法與32位ActiveX控件進行交互。

對我來說,“解決方案”是為我的項目使用32位JRE。 這並不理想,但至少我現在正在前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM