在 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:
这可能是 运行 没有找到 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");
您好,我在我的 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:
这可能是 运行 没有找到 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");