2016-01-22 34 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");