【发布时间】:2017-11-21 11:45:55
【问题描述】:
我想创建一个在使用键盘时触发鼠标单击或拖放的程序/脚本。例如:如果您按 1,则保存鼠标位置。如果您按 2,鼠标将转到保存的位置。我知道这在不同的编程语言中是可能的,我想知道哪一种最适合用于此目的。谁能给我一点启发?
编辑:
import java.awt.MouseInfo;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import java.awt.AWTException;
import java.awt.event.*;
public class nudan implements KeyListener{
int x1;
int y1;
public static void main(String[] args) throws AWTException{
JFrame jf = new JFrame("Key Event");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.addKeyListener(new nudan());
jf.setVisible(true);
jf.setAlwaysOnTop(true);
Robot rt = new Robot();
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == e.VK_NUMPAD1){
System.out.println("Key Pressed: " + e.getKeyChar());
this.y1 = MouseInfo.getPointerInfo().getLocation().y;
this.x1 = MouseInfo.getPointerInfo().getLocation().x;
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == e.VK_NUMPAD2){
System.out.println(x1);
System.out.println(y1);
try {
new Robot().mouseMove(x1, y1);
} catch (AWTException e1) {
e1.printStackTrace();
}
}
}
@Override
public void keyTyped(KeyEvent e) {
}
}
到目前为止,谢谢你们。所以这行得通。如果按 Numpad 1,它会保存位置并打印“1”。当按下 numpad 2 时,它会转到保存的位置并打印保存的位置。但是不知何故,当我开始我的游戏并尝试使用它时,我的鼠标没有移动,即使它打印了位置,所以脚本仍在运行。有人知道吗?
【问题讨论】:
-
为什么要标记三种不同的编程语言?
-
“如果你按 2 鼠标将转到保存的位置”,你不能在 JavaScript 中这样做,也不应该这样做。如果您可以强制鼠标移动到某个位置,那将是一个严重的安全漏洞。
-
我认为由于基于 Web 的应用程序中的安全原因,无法完成鼠标移动。如果您想做这样的工作,请使用 java、.net 等开发一个独立的程序
-
欢迎来到 stackoverflow.com。请花点时间阅读the help pages,尤其是名为“What topics can I ask about here?”和“What types of questions should I avoid asking?”的部分。也请take the tour 阅读how to ask good questions。最后请学习如何创建Minimal, Complete, and Verifiable Example。
标签: java