2 votes

Comment automatiser la connexion d'un client en utilisant Java ?

J'ai donc essayé de me connecter automatiquement via un client WinSCP. J'ai toutes les informations d'identification enregistrées dans le client pour le moment où je l'ouvre. Si j'appuie manuellement sur Enter sur mon clavier, le client se connectera. J'ai essayé d'utiliser le robot méthode créditée à @Slanec

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

Cependant, lorsque j'ai vérifié l'API Java, il semble que cela ne serve qu'à vérifier si l'utilisateur a appuyé sur une touche ou non ?

Quoi qu'il en soit... voici le code que j'ai actuellement. Le code ouvre l'invite de commande et entre un chemin de fichier spécifié pour ouvrir une application spécifique WinSCP. Une fois l'application ouverte, je veux que le Enter Il faut appuyer sur la touche pour que je puisse me connecter. Si j'appuie manuellement sur la touche Entrée au cours de ce processus, tout se passe bien. Mais est-il possible de faire en sorte que le code Java appuie sur la touche Entrée à ma place afin que le processus soit entièrement automatique ? J'ai ajouté le programme pour qu'il se termine au bout de 5 secondes, simplement à des fins de test. Toute contribution serait grandement appréciée.

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();
            }
 }

}

3voto

duffanpj Points 56

J'ai compris ce qui se passait. Les deux lignes d'appui sur le clavier étaient exécutées avant que le client puisse s'ouvrir. J'ai simplement ajouté une commande thread.sleep entourée d'un bloc try et catch et maintenant le code fonctionne parfaitement.

    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();
        }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X