我使用java.awt.Robot()
这样的工具完成了播放器部分,它模拟基本的人类鼠标/键盘输出命令,读取XML文件。
我被困在我必须记录该XML文件的部分。 我不知道哪个Class可以用来做与Robot相反的操作()如果你有任何FemaleRobot()对我来说我会非常高兴:D
到目前为止,我唯一朝这个方向走的是:
while (true) {
Point pos = MouseInfo.getPointerInfo().getLocation();
System.out.println(pos.x+" x "+pos.y);
}
这并不多,也不是我想要的^ _ ^,我不知道如何使用Mouse / KeyListener,因为它需要一个Component。如果这是唯一的方法,我使用什么Compoment,因为我不想要任何图形java实现?我应该创建一个虚假组件吗?哪一个?
e.g。我希望我的刻录机能够在XML中编写我如何点击我的ubuntu桌面或在Firefox上按Enter键。
我想很明显,如果不是,我会很多地检查答案。祝你有个美好的一天,感谢您阅读本文。
答案 0 :(得分:3)
尝试jnativehook lib: http://code.google.com/p/jnativehook/wiki/examples
它非常易于使用,可以满足您的需求。
答案 1 :(得分:2)
我很遗憾地通知您,完全无法监控表单之外的鼠标点击和击键。 Java事件根本不会超出表单范围。
java的行为方式是消除基于java的恶意软件试图窃取敏感数据的可能性。
答案 2 :(得分:0)
您可以在此处找到鼠标侦听器的示例:http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
要写入文件,您可以执行以下操作:
FileWriter fileStream = new FileWriter("myfile.extention");
BufferedWriter out = new BufferedWriter(fileStream);
out.write("pos.x+" x "+pos.y");
如果你这样做:
while (true)
{
Point pos = MouseInfo.getPointerInfo().getLocation();
System.out.println(pos.x+" x "+pos.y);
}
您需要在循环中添加Thread.Sleep调用。
然后您可以通过执行以下操作来阅读该文件:
FileInputStream fileStream = new FileInputStream("myfile.extention");
DataInputStream in = new DataInputStream(fileStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in))
String position = br.readLine()
然后您可以解析该字符串以获取值。
所以你可以这样做:
FileWriter filewrite = new FileWriter("myfile.txt");
BufferedWriter out = new BufferedWriter(filewrite);
while (Recording)
{
Point pos = MouseInfo.getPointerInfo().getLocation();
out.write(pos.x + " " + pos.y);
Thread.sleep(50);
}
FileInputStream fileStream = new FileInputStream("myfile.txt");
DataInputStream in = new DataInputStream(fileStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in))
String position;
while(position = br.readLine() != null)
{
String[] positions = position.split(" ");
int x = Integer.parseInt(positions[0]);
int y = Integer.parseInt(positions[1]);
}
您必须使用鼠标事件将单击位置写入文件。
答案 3 :(得分:-1)
你可以先得到屏幕的分辨率。第二件事就是制作一个屏幕尺寸的框架,使其透明度达到0%。当你点击屏幕上的某个位置放下你的jframe并使用鼠标机器人来点击一个位置。你可以得到整个屏幕的坐标。这样你可以记录鼠标点击,但问题出现的时候是你需要输入文字