线程" main"中的例外情况com.jacob.com.ComFailException:无法共同创建对象

时间:2016-05-10 14:21:35

标签: windows selenium autoit

我遵循本教程:http://www.joecolantonio.com/2014/07/02/selenium-autoit-how-to-automate-non-browser-based-functionality/在Windows中自动化非浏览器应用程序。

import java.io.File;
import autoitx4java.AutoItX;
import com.jacob.com.LibraryLoader;

import java.lang.System;

public class CalcTest {

    /**
     *
     * Returns if the JVM is 32 or 64 bit version
     */
    public static String jvmBitVersion(){
        return System.getProperty("sun.arch.data.model");
    }

    public static void main(String[] args) throws InterruptedException {

        String jacobDllVersionToUse;
        if (jvmBitVersion().contains("32")){
            jacobDllVersionToUse = "jacob-1.18-x86.dll";
        }
        else {
            jacobDllVersionToUse = "jacob-1.18-x64.dll";
        }

        File file = new File("lib", jacobDllVersionToUse);
        System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath());

        AutoItX x = new AutoItX();
        x.run("calc.exe");
        x.winActivate("Calculator");
        x.winWaitActive("Calculator");
        //Enter 3
        x.controlClick("Calculator", "", "133") ;
        Thread.sleep(1000);
        //Enter +
        x.controlClick("Calculator", "", "93") ;
        Thread.sleep(1000);
        //Enter 3
        x.controlClick("Calculator", "", "133") ;
        Thread.sleep(1000);
        //Enter =
        x.controlClick("Calculator", "", "121") ;
    }

}

我收到以下错误:

Exception in thread "main" 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 autoitx4java.AutoItX.<init>(AutoItX.java:181)
    at CalcTest.main(CalcTest.java:30)

教程说我应该在cmd中运行regsvr32 C:\install\AutoItX\AutoItX3_x64.dll但是我一直收到以下错误:

The module "C:\install\AutoItX\AutoItX3_x64.dll" was loaded but the call to DllRegisterServer failed with error code 0x80070005

我不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

以下解决方案对我有用:

  1. 复制AutoItX3_x64.dll个文件。您可以在C:\Program Files (x86)\AutoIt3\AutoItX

  2. 中找到它
  3. 将其粘贴到C:\Windows\System32

  4. 打开cmd提示符,以管理员身份运行。输入regsvr32 AutoItX3_x64.dll,然后按输入

  5. 当AutoItX3_x64.dll中的DllRegisterServer成功时,您将收到一条消息提示。

答案 1 :(得分:0)

我必须以管理员身份运行cmd。也许还有这个。我相信有一天有人会发现自己在同一条船上......

答案 2 :(得分:-1)

在cmd中以管理员身份登录运行,因为您使用的是64位操作系统,请在路径C:\ Windows \ SysWOW64

中运行它

并且在路径中运行32位,C:\ Windows \ System32

- Swapna Mhatre