Итак, я пытаюсь автоматически войти в систему через клиент WinSCP. У меня есть все учетные данные, сохраненные в клиенте, когда я его открываю. Если я вручную нажмите Enter
на клавиатуре, то клиент будет войти. Я попытался с помощью метода robot
зачисленного @SlanecКак автоматизировать логин клиента с помощью Java?
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);
Однако, когда я проверил Java API это только кажется, проверить, является ли или не ключ нажата пользователем?
В любом случае ... это код, который у меня есть. Код открывает командную строку и вводит указанный путь к файлу, чтобы открыть специальное приложение WinSCP. После того, как приложение открыто, я хочу, чтобы клавиша 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();
}
}
}
вам может понадобиться, чтобы сфокусировать приложение –
Да, я думал о попытке что-то подобное, пытаясь сосредоточиться на приложение, чтобы принести рамку на фронт, но не смогли найти ничего, чтобы достигнуть этого. Кроме того, я не думаю, что это будет полностью работать, потому что мне не нужно кликать по клиенту, когда я хочу войти в систему (например, когда я нажимаю клавишу ввода вручную, он все равно работает нормально. Не кликайте клиентом, чтобы сфокусировать его). – duffanpj