在 Java 中无法使用 Autoit 启动 cmd 或记事本

Unable to launch cmd or notepad using Autoit in Java

您好,我在我的 Java 程序中使用 AutoIt autoitx4java.Below 是我正在使用的代码:

import java.io.File;

import autoitx4java.AutoItX;

import com.jacob.com.LibraryLoader;

public class MyTest {

    public static void main(String[] args) throws InterruptedException{
        // TODO Auto-generated method stub
        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();
     // System.out.println(file.getAbsolutePath());
        x.run("cmd.exe");


    }

    private static String jvmBitVersion() {
        // TODO Auto-generated method stub
        System.out.println(System.getProperty("sun.arch.data.model"));
        return System.getProperty("sun.arch.data.model");

    }

}

当我 运行 这个程序没有任何反应并且没有错误 also.This 如果我用 notepad.exe 替换 cmd.exe 也会发生。 然而,当我将 cmd.exe 替换为 calc.exe 时,计算器启动。

我是 AutoIt 的新手,使用下面的 link 来设置 AutoIt Java:

http://www.joecolantonio.com/2014/07/02/selenium-autoit-how-to-automate-non-browser-based-functionality/

这可能是 运行 没有找到 cmd 和记事本,如果它在错误的路径中查找,可能是 32/64 位问题。或者进程已经启动但是 window 不可见,所以在任务管理器中检查进程是否 运行s.

Run will not give an error, but it will return "0 and set @error to non-zero". If it succeeds, it will return "the PID of the process that was launched" https://www.autoitscript.com/autoit3/docs/functions/Run.htm

要查看它是否成功,请尝试此操作并查看它是否 returns 一个 pid:

MsgBox(0, "test", run("cmd.exe"))

如果它是returns 0,这可能意味着找不到该程序。尝试完整的文件路径,例如:

MsgBox(0, "test", run("cmd.exe", "C:\Windows\System32\"))

如果返回 pid 并且进程是 运行ning 但您看不到 window,请尝试添加 @SW_SHOW 标志:

run("cmd.exe", "", @SW_SHOW)

运行("cmd.exe", "", @SW_SHOW) 成功了!

您好,您可以使用以下代码打开记事本。因为这对我有用。

    AutoItX x = new AutoItX();
    x.run("notepad.exe","",AutoItX.SW_SHOW);
    x.winActivate("Untitled - Notepad");
    x.winWaitActive("Untitled - Notepad");
    x.send("This is some text");