2016-06-27 7 views
2

私は自動的にWinSCPクライアントからログインしようとしています。私はそれを開いたときにクライアントに保存されている資格情報をすべて持っています。私は手動で私のキーボードでEnterを押した場合、クライアントはログインする私は、Java APIをチェックしたとき。私は@SlanecJavaを使用してクライアントのログインを自動化するにはどうすればよいですか?

Robot r = new Robot(); 
r.keyPress(KeyEvent.VK_ENTER); 
r.keyRelease(KeyEvent.VK_ENTER); 

に入金robot方法を使用してみましたが、これは単にキーがあるかどうかをチェックするようですユーザによって押された?

とにかく...これは私が現在持っているコードです。コードはコマンドプロンプトを開き、指定されたファイルパスを入力して特定のアプリケーションWinSCPを開きます。アプリケーションが開かれたら、Enterのキーを押してログインできるようにしておきます。このプロセス中に手動でEnterキーを押すと正常に動作します。それはプロセスが完全に自動になるようにJavaコードを私のための入力を押すことが可能ですか?テスト目的のために5秒で終了するプログラムを追加しました。どんな入力も非常に高く評価されます。

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.io.IOException; 

public class runADP 
{ 

    public static void main(String[] args) 
    { 
      try 
      { 
       System.out.println("Opening WinSCP"); 
       Runtime runTime = Runtime.getRuntime(); 
       Process process = runTime.exec("C:\\Program Files (x86)\\WinSCP\\WinSCP.exe"); 
       try 
       { 
         Thread.sleep(5000); 
         Robot r = null; 
          try 
          { 
           r = new Robot(); 
           r.keyPress(KeyEvent.VK_ENTER); 
           r.keyRelease(KeyEvent.VK_ENTER); 

          } 
          catch (AWTException e) 
          { 
           e.printStackTrace(); 
          } 

       } 
       catch (InterruptedException e) 
       { 
        e.printStackTrace(); 
       } 
      System.out.println("Closing WinSCP"); 
      process.destroy(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
} 

}

+1

あなたは –

+0

うん、私は前にフレームを持参するようにアプリケーションを集中しようとする、そのようなことをしようと思ったアプリケーションを集中する必要があるかもしれませんが、これを達成するために何かを見つけることができませんでした。また、私は私がログインしたいときにクライアントをクリックする必要がないので、これが完全に機能するとは思わない(手動でEnterキーを押すと、それはまだうまく動作する。 – duffanpj

答えて

3

私は何が起こっていたかを考え出しました。クライアントが開く前に、2つのキー押し線が実行されていました。 tryとcatchブロックで囲まれたthread.sleepコマンドを追加するだけで、コードは完全に機能します。

public void go() 
    { 
     try 
     { 
      System.out.println("Opening WinSCP"); 
      Runtime runTime = Runtime.getRuntime(); 
      Process process = runTime.exec("C:\\Program Files (x86)\\WinSCP\\WinSCP.exe"); 
      Robot r = null; 
      try 
      { 
       Thread.sleep(2000); 
       r = new Robot(); 
       r.keyPress(KeyEvent.VK_ENTER); 
       r.keyRelease(KeyEvent.VK_ENTER); 

      } 
      catch (AWTException | InterruptedException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
     catch (IOException e) 
     { 
     e.printStackTrace(); 
     } 
} 
関連する問題