无法共同创建对象/找不到绰号 |雅各布

2023-12-02

当创建一个ActiveXComponent使用 JACOB 我收到以下错误。

com.jacob.com.ComFailException: Can't co-create object
    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 com.paston.jacobtest.RidderIQ.main(RidderIQ.java:30)

我需要从一个程序中使用的 COM 对象,该程序在安装过程中不会自行注册其 DLL。

为了注册 DLL,我根据以下内容使用了 64 位版本的 RegAsmthis可能有帮助的文章。另外,我尝试加载外部程序中的每个 DLL,因为我怀疑加载依赖项时可能出现“某些问题”。

这是我当前的代码:

public static void main(String[] args) {

    String dllDir = "C:\\Program Files (x86)\\Ridder iQ Client\\Bin\\";
    File folder = new File( dllDir );

    for (final File fileEntry : folder.listFiles()) {
        String str = fileEntry.getName();
        if (str.substring(str.lastIndexOf('.') + 1).equals("dll")) {
            System.out.println(fileEntry.getName());
            System.load(dllDir + str);
        }
    }

    try {
        ActiveXComponent example = new ActiveXComponent("RidderIQSDK");
    } catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }

}

将名称更改为 clsid 时,我遇到了不同的异常。

com.jacob.com.ComFailException: Can't find moniker
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 com.paston.jacobtest.RidderIQ.main(RidderIQ.java:28)

我让 JACOB 在另一个测试中使用系统的 Random 对象来处理我的代码。

    ActiveXComponent random = new ActiveXComponent("clsid:4E77EC8F-51D8-386C-85FE-7DC931B7A8E7");
    Object obj = random.getObject();

    Object result = Dispatch.call((Dispatch) obj, "Next");
    System.out.println("Result: "+result);

我尝试了所有的解决方案,终于成功破解了JACOB相关的代码。按照下面的示例代码创建您的代码。

public static void main(String[] args) {
        String libFile = System.getProperty("os.arch").equals("amd64") ? "jacob-1.17-x64.dll" :"jacob-1.17-x86.dll";
        try{
            /**
             * Reading jacob.dll file
             */
            InputStream inputStream = certificatemain.class.getResourceAsStream(libFile);
            /**
             *  Step 1: Create temporary file under <%user.home%>\AppData\Local\Temp\jacob.dll 
             *  Step 2: Write contents of `inputStream` to that temporary file.
             */
            File temporaryDll = File.createTempFile("jacob", ".dll");
            FileOutputStream outputStream = new FileOutputStream(temporaryDll);
            byte[] array = new byte[8192];
            for (int i = inputStream.read(array); i != -1; i = inputStream.read(array)){
                outputStream.write(array, 0, i);
            }
            outputStream.close();
            /* Temporary file will be removed after terminating-closing-ending the application-program */
            System.setProperty(LibraryLoader.JACOB_DLL_PATH, temporaryDll.getAbsolutePath());
            LibraryLoader.loadJacobLibrary();

            ActiveXComponent comp=new ActiveXComponent("Com.Calculation");        
            System.out.println("The Library been loaded, and an activeX component been created");

            int arg1=100;
            int arg2=50;
            //using the functions from the library:        
            int summation=Dispatch.call(comp, "sum",arg1,arg2).toInt();
            System.out.println("Summation= "+ summation);
        }catch(Exception e){
            e.printStackTrace();
        }
}

现在让我告诉你如何注册你的DLL。我也遵循了您提到的同一篇文章,但在处理小程序时不起作用。

Go to x86使用命令行的框架。

C:\Windows\Microsoft.NET\Framework\v2.0.50727

注册做同样的事

regasm.exe path_to_your_dll.dll /codebase

不要传递任何其他标志,除了/codebase。你已经完成了...仍然发现任何问题让我知道...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法共同创建对象/找不到绰号 |雅各布 的相关文章

随机推荐

  • Vagrant ssh 'private_key_path` 文件必须存在

    我在 vagrant up 期间收到此错误 There are errors in the configuration of this machine Please fix the following errors and try agai
  • Java:使用itext读取PDF书签名称

    我正在处理包含多个文档的单个 PDF 每个文档都有一个书签 我需要读取我正在构建的调节应用程序的书签名称 下面的代码对我不起作用 我试图将书签名称放入title细绳 有人可以提供任何指导吗 非常感谢 PdfReader reader new
  • 防止 QScintilla 中触发键盘快捷键(示例代码)

    我想防止在 QScintilla 小部件中编辑代码时触发应用程序键盘快捷键 就像普通的 QLineEdit 字段不会触发一样 在下面的可执行示例代码中 无法在 QScintilla 小部件中键入空格 因为空格键已设置为快捷方式 但在 QLi
  • 使用 C# 将字符串表达式转换为整数值[重复]

    这个问题在这里已经有答案了 抱歉 如果这个问题已经得到解答 但我没有找到合适的答案 我在 C 中有一个字符串表达式 需要将其转换为 int 或十进制值 例如 string strExp 10 20 30 输出应该是 60 我该怎么办 Fwi
  • 斯威夫特||返回一个可由 API 调用中的其他方法使用的类

    我正在从移动应用程序调用 HERE Weather API 并且需要将当前天气作为对象返回 以便其他方法可以在给定时间段 例如 30 分钟更新间隔 内使用该信息 我根据这个网站对异步调用有了一个粗略的了解https fluffy es re
  • RestEASY 和 Jackson 不兼容 - NoSuchMethodException

    我将我的项目从JBoss AS 7 2 to 野蝇8 0经过一段时间的版本更新后 我不知道如何解决RestEASY and Jackson不兼容 In JBoss AS 7 2 I used RestEASY 3 0 6 Final and
  • 添加文本后缀

    我目前有很多这样的输入
  • 复选框的默认控件模板

    我找不到默认的 WPFControlTemplate for a CheckBox 有谁知道如何找到它吗 我所能找到的就是MSDN 上的 SilverLight 默认复选框模板 MSDN 有一个用于 WPF 复选框的自定义控件模板使用 X
  • iPhone动画帧速率和帧数

    我正在开发一个应用程序 客户想要为大图像 305x332 制作动画 客户希望在 1 75 秒内循环播放 50 帧动画 我发现该应用程序在进行如此多的处理时速度非常慢 启动 触摸响应和关闭都很慢 在 iPhone 本身上 该应用程序经常会崩溃
  • Angular CDK 拖放绝对定位元素而不跳转

    我正在尝试使用 CDK 中的 Angular Drag Drop 来实现带有可拖动元素的基本侧边栏 用户可以将它们拖放到 内容 区域中的任何位置 这意味着 元素最终应该是绝对定位的 并且应该能够存在于用户想要的任何地方 包括相互重叠 我正在
  • 如何在 VBScript 中循环?

    我想知道如何 或者甚至知道是否可以在 VBScript 中的循环内循环 从逻辑上讲 世界是这样运作的 Do until y 5 msgbox msgbox 1 loop test Do Until z 5 msgbox msgbox 2 l
  • R 中的过滤和显示过滤数据摘要的奇怪之处

    我有一个使用 R 中的 CSV 库加载的数据框 例如 mySheet lt read csv Table csv sep 我现在可以打印该 mySheet 对象的摘要 summary mySheet 它将向我显示每一列的摘要 例如 名为 D
  • go中如何导入本地包?

    我是新来的 正在处理我想要本地化的示例代码 在原来的main go导入声明是 import log net http github com foo bar myapp common github com foo bar myapp rout
  • 节点服务器在解析 JSON 时崩溃

    看起来我的节点服务器死掉了parseJSON 查看日志 最后一条消息是 解析之前 并且从未打印 解析之后 奇怪的是 我用 try catch 包装了 JSON pars 所以我不确定它是如何导致服务器崩溃的 有什么想法吗 logger pr
  • glmmLasso 错误和警告

    我正在尝试使用 glmmLasso 在广义线性混合模型中执行变量选择 但出现了一个我无法解决的错误和警告 数据集不平衡 一些参与者 PTNO 拥有比其他参与者更多的样本 无缺失数据 我的因变量是二进制的 所有其他变量 除了 ID 变量 PT
  • 如何从Google Play商店获取应用市场版本信息?

    如何从 Google Play 商店获取应用程序版本信息 以便在 Play 商店应用程序更新时提示用户强制 建议更新应用程序 即用户使用旧版本应用程序时 我已经经历过android 市场 api这不是官方方式 并且还需要授权登录来自谷歌的身
  • 类将数据成员存储在顺序内存中?

    这个问题的简短版本 指向类的第一个数据成员的指针是否会导致指向其所有数据成员的指针 讨论 我正在阅读一些示例代码 这很有趣 当一个特定的函数 在本例中是glUniformMatrix4fvOpenGL 中的 C 函数 将数组作为参数 这是使
  • Javascript 模式:条件事件处理程序

    给定例如某种类实例具有状态 例如 活动 非活动 该实例还附加了一个点击事件 例如一个链接 但事件处理程序根据实例的状态执行不同的操作 伪代码 IF instance state IS active AND link is clicked T
  • 在 iOS 上通过 FCM 使用丰富推送通知中的数据

    我的问题可能很糟糕 但我在任何地方都找不到任何答案 我迷路了 所以我想在 iOS 10 中显示带有漂亮图像的丰富通知 为此 我使用 FCM 和 UNNotificationServiceExtension 如果我理解正确的话 它应该获取数据
  • 无法共同创建对象/找不到绰号 |雅各布

    当创建一个ActiveXComponent使用 JACOB 我收到以下错误 com jacob com ComFailException Can t co create object at com jacob com Dispatch cr