2016-01-22 72 views
1
AutoIt的记事本

你好我使用autoitx4java.Below在我的Java程序中使用的AutoIt是我使用的代码:无法启动CMD或Java中使用

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"); 

    } 

} 

当我运行这个程序,什么都不会发生,并有也没有错误。这也发生,如果我替换cmd.exe notepad.exe。 但是,当我用calc.exe计算器启动替换cmd.exe。

我是新来的AutoIt和使用下面的链接设置的AutoIt与Java:

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

+0

也许你应该检查的是操作系统体系结构,而不是JVM体系结构。毕竟,您可以在64位操作系统上运行32位JVM。强制你的代码使用64位DLL,如果这不起作用,那么强制32位DLL,如果这不起作用,然后尝试提供一个明确的路径cmd.exe,看看是否有所作为。 – DevilsHnd

回答

0

这可能是运行没有找到CMD和记事本如果找错了路,可能是一个32/64位的问题。或者该进程已启动,但窗口不可见,因此请检查该进程是否在任务管理器中运行。

运行不会给出错误,但会返回“0并将@error设置为非零”。如果成功,它将返回 https://www.autoitscript.com/autoit3/docs/functions/Run.htm

“这是启动的进程的PID”要看看它是否成功,试试这个,看看它是否返回PID:

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

如果返回0这可能意味着程序没有找到。尝试完整文件路径,例如:

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

如果返回PID和正在运行的进程,但你看不到窗口,尝试添加@SW_SHOW标志:

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

运行(“CMD.EXE “,”“,@SW_SHOW)工作!

0

嗨,打开记事本,你可以使用下面的代码。因为这对我有用。

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");