java - 可以修改第三方 ActiveX 控件中的枚举吗?

标签 java com enums activex

我正在使用供应商提供的 ActiveX 控件来读取 RFID 卡的 USB 设备。

我的应用程序是用 java 编写的,因此我使用 EZJCom 作为“桥梁” - 因此,activeX 控件的所有属性和方法都可以通过 java 类使用。

如果我查看 Windows 设备管理器,读卡器设备位于 com 端口 COM8 上。

现在,问题是由这个枚举引起的,它指示设备正在运行的 COM 端口。

typedef enum {
    COM1 = 1,
    COM2 = 2,
    COM3 = 3,
    COM4 = 4
} CommPortConstants;

我的 Java 代码可以做到这一点:

cardReader.get_DMF5Ax().setCommPort(CommPortConstants.COM4);  // OK

但不是这个:

cardReader.get_DMF5Ax().setCommPort(CommPortConstants.COM8);  // fails!

换句话说,由于此枚举的性质,我无法在 COM8 上查找设备(通过 java 调用 ActiveX 控件)。

对于我的问题:有没有办法“编辑”ActiveX 控件并向枚举添加值?

或者有没有更好的方法(除了EZJCom)来使用java中的activeX控件。

请注意,我没有 ActiveX 控件的源代码,并且(来自 java 世界)我也不熟悉制作它们的开发环境。

最佳答案

我对 EZJCom 一无所知(对 Java 也知之甚少),但从 ActiveX/COM 来看,我认为您应该不会遇到问题。

COM 方法(特别是自动化方法)不获取 Java 枚举。在大多数情况下,它们要么得到 LONG,而在某些情况下,它们会得到 VARIANT 或类型 I4。

看起来 CommPortConstants 只是常量,所以这应该适合您:

cardReader.get_DMF5Ax.setCommPort(8)

关于java - 可以修改第三方 ActiveX 控件中的枚举吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20024135/

相关文章:

c# - 如何在 const 字符串中包含枚举值?

c# - 如何为枚举类型参数创建扩展方法?

c - 存储大小未知 : enum

java - 中间键值对流是否在 hadoop 中优化

java - SSLHandshakeException : ValidatorException: PKIX path building failed: sun. security.provider.certpath.SunCertPathBuilderException:

java - 来自 GWT AbstractCell 的 MGWT TapEvent?

c# - 如何加载类型库以在 C# 中解析它?

c# - vsto Range.Find on empty single cell selection 返回单元格外的范围

java - REST 资源方法的默认 MIME 类型

c++ - 使用 IDispatch 的 C++ 和 COM 类动态替代方案