gpt4 book ai didi

java - 让 Java Robot 输入 for 循环中的内容

转载 作者:行者123 更新时间:2023-12-01 10:58:08 26 4
gpt4 key购买 nike

我在网上找到了 Java 代码,可以让我使用 Robot 类来做各种事情。我目前正在使用它来尝试自动化数据库转储,该转储需要重复输入文件名(在本例中为数字)。不,我不能只是在最后进行批处理文件重命名,它们必须独立命名。我不想执行 13,000 次(我的数据库大小),因此我尝试将其自动化。我需要但我没有的是机器人代码来键入 For 循环中的内容。我的代码如下:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

public class RobotClicker
{
Robot robot = new Robot();

public static void main(String[] args) throws AWTException
{
new RobotClicker();
}

public RobotClicker() throws AWTException
{
robot.setAutoDelay(40);
robot.setAutoWaitForIdle(true);

robot.delay(4000);
robot.mouseMove(144, 400);
robot.delay(500);

leftClick();
robot.delay(500);
leftClick();

robot.delay(500);
for(int i = 856; i>858;i++ ){
String holding = "test ";
type(holding);
}

robot.mouseMove(450, 480);
robot.delay(500);

leftClick();
robot.delay(500);
leftClick();

robot.delay(1000);
System.exit(0);
}

private void leftClick()
{
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(200);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(200);
}

private void type(int i)
{
robot.delay(40);
robot.keyPress(i);
robot.keyRelease(i);
}

private void type(String s)
{
byte[] bytes = s.getBytes();
for (byte b : bytes)
{
int code = b;
// keycode only handles [A-Z] (which is ASCII decimal [65-90])
if (code > 96 && code < 123) code = code - 32;
robot.delay(40);
robot.keyPress(code);
robot.keyRelease(code);
}
}
}

文件名只是数字。我需要 for 循环来生成序列中的下一个数字,然后机器人将其输入,重复令人作呕。目前,机器人的移动和点击效果都很好,但没有任何输出。任何帮助将不胜感激。

最佳答案

这是一个可以输入字母和数字的简单示例:

import java.awt.*;
import java.util.*;
import java.lang.reflect.Field;
import java.awt.event.*;
import javax.swing.*;

public class RobotCharacter
{
public static void main(String[] args)
throws Exception
{
JTextField textField = new JTextField(10);

JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.add( textField );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );

Robot robot = new Robot();
typeCharacter(robot, "a");
typeCharacter(robot, "b");
typeCharacter(robot, "C");
typeCharacter(robot, "D");
typeCharacter(robot, "%");
}

public static void typeCharacter(Robot robot, String letter)
{
try
{
boolean upperCase = Character.isUpperCase( letter.charAt(0) );
String variableName = "VK_" + letter.toUpperCase();

Class clazz = KeyEvent.class;
Field field = clazz.getField( variableName );
int keyCode = field.getInt(null);

robot.delay(1000);

if (upperCase) robot.keyPress( KeyEvent.VK_SHIFT );

robot.keyPress( keyCode );
robot.keyRelease( keyCode );

if (upperCase) robot.keyRelease( KeyEvent.VK_SHIFT );
}
catch(Exception e)
{
System.out.println(e);
}
}
}

关于java - 让 Java Robot 输入 for 循环中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33507384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com